Exemple #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;
}
void show_settings_menu() {
    static char* headers[] = { "COT Settings",
                                "",
                                NULL
    };
    
    #define SETTINGS_ITEM_LANGUAGE      0
    #define SETTINGS_ITEM_THEME         1
    #define SETTINGS_CHOOSE_BACKUP_FMT	2
    #define SETTINGS_ITEM_ORS_REBOOT    3
    #define SETTINGS_ITEM_ORS_WIPE      4
    #define SETTINGS_ITEM_NAND_PROMPT   5
    #define SETTINGS_ITEM_SIGCHECK      6
    #define SETTINGS_ITEM_TS_CAL		7

    static char* list[9];
	
    list[0] = "Language";
    list[1] = "Theme";
    if (backupfmt == 0) {
		list[2] = "Choose Backup Format (currently dup)";
	} else {
		list[2] = "Choose Backup Format (currently tar)";
	}
    if (orsreboot == 1) {
		list[3] = "Disable forced reboots";
	} else {
		list[3] = "Enable forced reboots";
	}
	if (orswipeprompt == 1) {
		list[4] = "Disable wipe prompt";
	} else {
		list[4] = "Enable wipe prompt";
	}
	if (backupprompt == 1) {
		list[5] = "Disable zip flash nandroid prompt";
	} else {
		list[5] = "Enable zip flash nandroid prompt";
	}
    if (signature_check_enabled == 1) {
		list[6] = "Disable md5 signature check";
	} else {
		list[6] = "Enable md5 signature check";
	}
    list[7] = "Calibrate Touchscreen";
    list[8] = NULL;

    for (;;) {
        int chosen_item = get_menu_selection(headers, list, 0, 0);
        switch (chosen_item) {
            case GO_BACK:
                return;
            case SETTINGS_ITEM_THEME:
            {
                static char* ui_colors[] = {"Hydro (default)",
                                                    "Blood Red",
                                                    "Custom Theme (sdcard)",
                                                    NULL
                };
                static char* ui_header[] = {"COT Theme", "", NULL};

                int ui_color = get_menu_selection(ui_header, ui_colors, 0, 0);
                if(ui_color == GO_BACK)
                    continue;
                else {
                    switch(ui_color) {
                        case 0:
                            currenttheme = "hydro";
                            is_sd_theme = 0;
                            break;
                        case 1:
                            currenttheme = "bloodred";
							is_sd_theme = 0;
                            break;
                        case 2:
							currenttheme = "custom";
							is_sd_theme = 1;
							break;
                    }
                    break;
                }
            }
            case SETTINGS_CHOOSE_BACKUP_FMT:
            {
				static char* cb_fmts[] = {"dup", "tar", NULL};
				static char* cb_header[] = {"Choose Backup Format", "", NULL};
				
				int cb_fmt = get_menu_selection(cb_header, cb_fmts, 0, 0);
				if(cb_fmt == GO_BACK)
					continue;
				else {
					switch(cb_fmt) {
						case 0:
							backupfmt = 0;
							ui_print("Backup format set to dedupe.\n");
							nandroid_switch_backup_handler(0);
							list[2] = "Choose Backup Format (currently dup)";
							break;
						case 1:
							backupfmt = 1;
							ui_print("Backup format set to tar.\n");
							nandroid_switch_backup_handler(1);
							list[2] = "Choose Backup Format (currently tar)";
							break;
					}
					break;
				}
			}
            case SETTINGS_ITEM_ORS_REBOOT:
			{
                if (orsreboot == 1) {
					ui_print("Disabling forced reboots.\n");
					list[3] = "Enable forced reboots";
					orsreboot = 0;
				} else {
					ui_print("Enabling forced reboots.\n");
					list[3] = "Disable forced reboots";
					orsreboot = 1;
				}
                break;
            }
            case SETTINGS_ITEM_ORS_WIPE:
            {
				if (orswipeprompt == 1) {
					ui_print("Disabling wipe prompt.\n");
					list[4] = "Enable wipe prompt";
					orswipeprompt = 0;
				} else {
					ui_print("Enabling wipe prompt.\n");
					list[4] = "Disable wipe prompt";
					orswipeprompt = 1;
				}
				break;
            }
            case SETTINGS_ITEM_NAND_PROMPT:
            {
				if (backupprompt == 1) {
					ui_print("Disabling zip flash nandroid prompt.\n");
					list[5] = "Enable zip flash nandroid prompt";
					backupprompt = 0;
				} else {
					ui_print("Enabling zip flash nandroid prompt.\n");
					list[5] = "Disable zip flash nandroid prompt";
					backupprompt = 1;
				}
				break;
            }
            case SETTINGS_ITEM_SIGCHECK:
            {
				if (signature_check_enabled == 1) {
					ui_print("Disabling md5 signature check.\n");
					list[6] = "Enable md5 signature check";
					signature_check_enabled = 0;
				} else {
					ui_print("Enabling md5 signature check.\n");
					list[6] = "Disable md5 signature check";
					signature_check_enabled = 1;
				}
				break;
			}
            case SETTINGS_ITEM_LANGUAGE:
            {
                static char* lang_list[] = {"English",
#if DEV_BUILD == 1
                                            "Use Custom Language",
#endif
                                            NULL
                };
                static char* lang_headers[] = {"Language", "", NULL};

                int result = get_menu_selection(lang_headers, lang_list, 0, 0);
                if(result == GO_BACK) {
                    continue;
                } else if (result == 0) {
                    language = "en";
                } else if (result == 1) {
                    language = "custom";
                }

                break;
            }
            case SETTINGS_ITEM_TS_CAL:
            {
				ts_calibrate();
				break;
			}
            default:
                return;
        }
        update_cot_settings();
    }
}
void _cbSysSet(WM_MESSAGE* pMsg)
{
	int i=0;
	BUTTON_Handle SysInfoButton,MonitCalibraButton,SetDefaultButton,ReturnButton;
	WM_HWIN hWin = pMsg->hWin;
	WM_HWIN hItem;
	switch (pMsg->MsgId) 
	{
		case WM_CREATE:
			/* 设置聚焦*/
			WM_SetFocus(hWin);
			/* 创建四个图片按钮 */
			SysInfoButton = BUTTON_CreateEx(11, 44, 94, 94,  hWin, WM_CF_SHOW, 0, SYS_BUTTON_INFO);
			BUTTON_SetBitmapEx(SysInfoButton,BUTTON_BI_UNPRESSED, &bmSys_info_xg, 0 ,0);
            BUTTON_SetBitmapEx(SysInfoButton,BUTTON_BI_PRESSED, &bmSys_info, 0 ,0);  

			MonitCalibraButton = BUTTON_CreateEx(111, 44, 94, 94, hWin, WM_CF_SHOW, 0, SYS_BUTTON_MONIT);
			BUTTON_SetBitmapEx(MonitCalibraButton,BUTTON_BI_UNPRESSED, &bmSys_moniter_xg, 0 ,0);
            BUTTON_SetBitmapEx(MonitCalibraButton,BUTTON_BI_PRESSED, &bmSys_moniter, 0 ,0); 
        
			SetDefaultButton = BUTTON_CreateEx(211, 44, 94, 94 ,hWin, WM_CF_SHOW, 0, SYS_BUTTON_DEFAULT);
			BUTTON_SetBitmapEx(SetDefaultButton,BUTTON_BI_UNPRESSED, &bmSys_default_xg, 0 ,0);
            BUTTON_SetBitmapEx(SetDefaultButton,BUTTON_BI_PRESSED, &bmSys_default, 0 ,0);   

			ReturnButton = BUTTON_CreateEx(116, 170, 94, 52, hWin, WM_CF_SHOW, 0, SYS_BUTTON_RETURN);
			BUTTON_SetBitmapEx(ReturnButton,BUTTON_BI_UNPRESSED, &bmSys_return_xg, 0 ,0);
            BUTTON_SetBitmapEx(ReturnButton,BUTTON_BI_PRESSED, &bmSys_return, 0 ,0);   

			break;
		case WM_KEY:
			/* 按下某个键后发送到当前包含焦点的窗口*/
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) 
            { 
				case GUI_KEY_ESCAPE:
                    GUI_EndDialog(hWin, 1);
                    break;
				case GUI_KEY_TAB:
					WM_SetFocusOnNextChild(hWin);
					break;
            }
            break;
		case WM_PAINT:
			GUI_SetBkColor(BK_COLOR_2);
			GUI_Clear();
			break;
		case WM_NOTIFY_PARENT:
			if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) 
			{
				int Id = WM_GetId(pMsg->hWinSrc);
				switch (Id) 
				{
					case SYS_BUTTON_INFO:
						_DeleteFrame();
						_CreateFrame(&_cbSysInfo);
						break;
					case SYS_BUTTON_MONIT:				
                        /* ts_calibrate是属于是循环函数,关闭 TIM_TOUCH 避免不要
                           的扫描坐标,以免影响GUI的运行 */
                        TIM_Cmd(TIM_TOUCH,DISABLE); 
                        ts_calibrate();
                        _DeleteFrame();
                        _CreateFrame(&_cbSysSet);
                        TIM_Cmd(TIM_TOUCH,ENABLE);
						break;
					case SYS_BUTTON_WIFI:
					
						break;
					case SYS_BUTTON_DEFAULT:
						/* 增加对话框机制*/
                        _hWarningDlg = CreateSetDefaultWaring();
						break;
					case SYS_BUTTON_LANGUAGE:
					
						break;
					case SYS_BUTTON_RETURN:
						_DeleteFrame();
						_CreateFrame(&_cbIndex);						
						break;
				}
			}
			break;
		default:
		WM_DefaultProc(pMsg);
	}
}