Example #1
0
int main()
{
	char c;
	
	init_uart();
	lcd_init();
	lcd_enable();

	ts_init();

	ts_calibrate();
	
	printf("can update program with serial port\n\r");

	while (1)
	{
		printf("[w] write the nand flash\n\r");
		printf("[r] read the nand flash\n\r");
		printf("[e] erase the nand flash\n\r");
		printf("[g] get file, and write to nand flash 0 block\n\r");
		printf("[x] get file to ddr(0x52000000), run it\n\r");
		printf("[t] test lcd\n\r");
		printf("[s] test touch screem\n\r");

		do {
			c = getc();
			if (c == '\n' || c == '\r')
			{
				printf("\n\r");
			}
			else
			{
				putc(c);
			}
		} while (c == '\n' || c == '\r');
		
		switch (c)
		{
			case 'w':
			case 'W':
			{
				nand_write_test();
				break;
			}

			case 'r':
			case 'R':
			{
				nand_read_test();
				break;
			}

			case 'e':
			case 'E':
			{
				nand_erase_test();
				break;
			}

			case 'g':
			case 'G':
			{
				update_program();
				break;
			}

			case 'x':
			case 'X':
			{
				run_program();
				break;
			}
			
			case 't':
			case 'T':
			{
				lcd_test();
				break;
			}
			case 's':
			case 'S':
			{
				ts_test();
				break;
			}
		}
	}
	
	return 0;
}
Example #2
0
int main(int argc, const char *argv[])
{ 
    tm_cmd_t ipc_cmd;
    char i;
    int fd, opt_idx, c, max_pnl=PNL_NUM;
    char *short_opts = "p:sa:n:e:f:chvC:T:b:i:";
    pid_t pid;

    if(argc == 1)
        tm_test_usage();

    memset((char*)&ipc_cmd, 0, sizeof(tm_cmd_t));

    while ((c = getopt_long(argc, (char* const*)argv, short_opts, long_opts, &opt_idx)) != -1)
    {
        switch(c)
        {
            case 'C':
                memcpy(client_name, optarg, strlen(optarg));
                break;
            case 'T':
                memcpy(target_name, optarg, strlen(optarg));
                break;
            case 'b':
                ttm.arg.bind.set=1;
                memcpy(bind_buf, optarg, strlen(optarg));
                break;
            case 'a':
                ttm.arg.ap.set = 1;
                memcpy(ap_buf, optarg, strlen(optarg));
                break;
            case 'n':
                ttm.set_pnl_num = 1;
                ttm.pnl_num = optarg[0] - '0';
                break;
            case 'e':
                ttm.arg.evt.set = 1;
                memcpy(evt_buf, optarg, strlen(optarg));
                break;
            case 'f':
                ttm.arg.fb.set = 1;
                memcpy(fb_buf, optarg, strlen(optarg));
                break;
            case 'i':
                ttm.arg.pnl_evt.set = 1;
                memcpy(pnl_evt_buf, optarg, strlen(optarg));
                break;
            case 'c':
                ttm.calibrate = 1;
                break;
            case 'p':
                ttm.pnl_arg = optarg[0] - '0';
                break;
            case 's':
                ttm.split = 1;
                break;
            case 'h':
                tm_test_usage();
                break;
            case 'v':
                tm_test_version();
                break;
            default:
                break;
        }
    }

    parse_options();

#if TEST_DEBUG
    show_args_for_debug();
#endif

    if(ttm.calibrate)
    {
        tm_calibrate();
        return 0;
    }

    if(ttm.set_pnl_num)
        max_pnl = ttm.pnl_num;
    
    if(ttm.pnl_arg < 0 || ttm.pnl_arg > max_pnl)
    {
        printf("set panel error\n");
        tm_test_usage();
    }    

    if(!ttm.arg.ap.set)
    {
        printf("no set ap\n");
        return 0;
    }

    signal(SIGSEGV, sig);
    signal(SIGINT, sig);
    signal(SIGTERM, sig);

    ttm.mode =  ttm.arg.ap.num - 1;

    set_ttm();
    set_button_num(ttm.arg.ap.num + 3);
    set_comment();

    // set fb position
    for (i = 0; i < max_pnl; i++) 
    {
        printf("panel %d pan : %s\n",i,ttm.fb[(int)i].pan);
        printf("panel %d fb  : %s\n",i,ttm.fb[(int)i].dev);
        printf("panel %d evt : %s\n",i,ttm.evt[(int)i].dev);
        if((fd=open(ttm.fb[(int)i].pan, O_RDWR))>=0)
        {
            if (write(fd, "0,0", 3)<0) {
                dbg_log("write pan error, pan : %s",ttm.fb[(int)i].pan);
            }
            close(fd);
        }
        else
        {
            printf("open pan error\n");
        }
#if 1      
        pid = fork();
        if (pid == -1) 
        {
            printf("fork %d error \n", i);
        }
        else if (pid == 0)
        {
            ts_test(&ttm.fb[(int)i], &ttm.evt[(int)i]);
            _exit(0);
        }
#endif
    }
  
    if(open_ipc())
        return 0;

//    ipc_cmd.general.hdr=0xd0;
//    ipc_cmd.len=1;
//    ttm.wait_ver=1;
//    send_ipc(&ipc_cmd);
//
//    while(ttm.wait_ver)
//        sleep(1);

    // set ap display
    

    for (i = 0; i < 3; i++) 
    {
        if(ttm.mode == MONO_AP)
        {
            ipc_cmd.stretch.hdr=0xa1;
            ipc_cmd.stretch.panel=i;
            ipc_cmd.stretch.ap=ttm.arg.ap.data[0];
            ipc_cmd.len=3;
            send_ipc(&ipc_cmd);
        }
        else
        {	
            ipc_cmd.clear.hdr=0xa2;
            ipc_cmd.clear.panel=i;
            ipc_cmd.len=2;
            
            send_ipc(&ipc_cmd);
      
            for(int j=0; j<ttm.arg.ap.num; j++)
            {
                ipc_cmd.append.hdr=0xa0;
                ipc_cmd.append.panel=i;
                ipc_cmd.append.ap=ttm.arg.ap.data[j];

                set_pnl_append_cmd(&ipc_cmd.append, j);
                set_ap_append_cmd(&ipc_cmd.append, j);
               
                ipc_cmd.len=11;

                send_ipc(&ipc_cmd);
            }
        }
    }

    if(g_ipc.server)
    {
        lst_close_channel(g_ipc.server);
        g_ipc.server = NULL;
    }

    return 0;
}