int idle_entry(struct ftm_param *param, void *priv) { struct ftm_idle *idle = (struct ftm_idle *)priv; struct textview *tv = &idle->tv; int fd_suspend = -1, fd_backlight = -1, fd_mdm = -1; int ret = 0, key = 0, i = 0; char *s_state_mem = "mem"; char *s_state_on = "on"; char *s_backlight_on = "102"; char *s_backlight_off = "0"; char *s_mdm_txpwr_disable = "0"; char *close_com_port = "close com port!"; #ifdef MTK_ENABLE_MD1 char ccci_md1_dev[32]; #endif #ifdef MTK_ENABLE_MD2 char ccci_md2_dev[32]; #endif #ifdef MTK_MD_SHUT_DOWN_NT char ccci_md1_power_ioctl_dev[32]; char ccci_md2_power_ioctl_dev[32]; #endif const char *atcmd_ret; LOGD(TAG "%s: idle_entry\n", __FUNCTION__); init_text(&idle->title, param->name, COLOR_YELLOW); ui_init_textview(tv, idle_key_handler, (void*)idle); tv->set_title(tv, &idle->title); /* Make MD into flight mode */ #ifdef MTK_ENABLE_MD1 snprintf(ccci_md1_dev, 32, "%s", ccci_get_node_name(USR_FACTORY_IDLE, MD_SYS1)); LOGD(TAG "Open CCCI MD1 dev node: %s\n", ccci_md1_dev); fd_atcmd = openDeviceWithDeviceName(ccci_md1_dev); if (-1 == fd_atcmd) { LOGD(TAG "Fail to open CCCI interface\n"); return 0; } for (i = 0; i < 30; i++) usleep(50000); // sleep 1s wait for modem bootup #ifdef MTK_MD_SHUT_DOWN_NT snprintf(ccci_md1_power_ioctl_dev, 32, "%s", ccci_get_node_name(USR_FACTORY_IDLE_IOCTL, MD_SYS1)); LOGD(TAG "Open CCCI MD1 Power IOCTL dev node: %s\n", ccci_md1_power_ioctl_dev); fd_ioctl = openDeviceWithDeviceName(ccci_md1_power_ioctl_dev); if (-1 == fd_ioctl) { LOGD(TAG "Fail to open CCCI IOCTL interface\n"); return 0; } ExitFlightMode_PowerOffModem(fd_atcmd,fd_ioctl,FALSE); #else ExitFlightMode(fd_atcmd, FALSE); #endif #endif #ifdef MTK_ENABLE_MD2 snprintf(ccci_md2_dev, 32, "%s", ccci_get_node_name(USR_FACTORY_IDLE, MD_SYS2)); LOGD(TAG "Open CCCI MD2 dev node: %s\n", ccci_md2_dev); fd_atcmd2 = openDeviceWithDeviceName(ccci_md2_dev); if (-1 == fd_atcmd2) { LOGD(TAG "Fail to open MD2 CCCI interface\n"); return 0; } for (i = 0; i < 30; i++) usleep(50000); // sleep 1s wait for modem bootup #ifdef MTK_MD_SHUT_DOWN_NT snprintf(ccci_md2_power_ioctl_dev, 32, "%s", ccci_get_node_name(USR_FACTORY_IDLE_IOCTL, MD_SYS2)); LOGD(TAG "Open CCCI MD2 Power IOCTL dev node: %s\n", ccci_md2_power_ioctl_dev); fd_ioctlmd2 = openDeviceWithDeviceName(ccci_md2_power_ioctl_dev); if (-1 == fd_ioctlmd2) { LOGD(TAG "Fail to open CCCI MD2 IOCTL interface\n"); return 0; } ExitFlightMode_PowerOffModem(fd_atcmd2,fd_ioctlmd2,FALSE); #else ExitFlightMode(fd_atcmd2, FALSE); #endif #endif #if defined(MTK_EXTERNAL_MODEM_SLOT) && !defined(EVDO_DT_SUPPORT) #if defined(PURE_AP_USE_EXTERNAL_MODEM) fd_atcmd_dt = openDeviceWithDeviceName(CCCI_MODEM_MT8135); #else fd_atcmd_dt= openDeviceWithDeviceName(CCCI_MODEM_MT6252); #endif if (-1 == fd_atcmd_dt) { LOGD(TAG "Fail to open CCCI interface\n"); return 0; } #if defined(PURE_AP_USE_EXTERNAL_MODEM) initTermIO(fd_atcmd_dt, 5); #endif for (i = 0; i < 30; i++) usleep(50000); // sleep 1s wait for modem bootup ExitFlightMode(fd_atcmd_dt, FALSE); #endif /* Turn off thermal query MD TXPWR function */ fd_mdm = open("/proc/mtk_mdm_txpwr/txpwr_sw", O_RDWR, 0); if (fd_mdm == -1) { idle->mod->test_result = FTM_TEST_FAIL; LOGD(TAG "%s: cannot open /proc/mtk_mdm_txpwr/txpwr_sw, not support\n", __FUNCTION__); } else { ret = write(fd_mdm, s_mdm_txpwr_disable, strlen(s_mdm_txpwr_disable)); } /* Turn off backlight */ fd_backlight = open("/sys/class/leds/lcd-backlight/brightness", O_RDWR, 0); if (fd_backlight == -1) { idle->mod->test_result = FTM_TEST_FAIL; LOGD(TAG "%s: cannot open /sys/class/leds/lcd-backlight/brightness\n", __FUNCTION__); return -1; } ret = write(fd_backlight, s_backlight_off, strlen(s_backlight_off)); /* Make AP enter sleep mode */ fd_suspend = open("/sys/power/state", O_RDWR, 0); if (fd_suspend == -1) { idle->mod->test_result = FTM_TEST_FAIL; LOGD(TAG "%s: cannot open /sys/power/state\n", __FUNCTION__); return -1; } ret = write(fd_suspend, s_state_mem, strlen(s_state_mem)); if(!get_is_ata()) { while (1) { key = ui_wait_phisical_key(); LOGD(TAG "%s: %d\n", __FUNCTION__, key); ret = write(fd_suspend, s_state_on, strlen(s_state_on)); close(fd_suspend); LOGD(TAG "%s: exit from suspend\n", __FUNCTION__); break; } } else { int write_len = write(usb_com_port, close_com_port, strlen(close_com_port)); LOGD(TAG "after write data to pc\n"); if(write_len != strlen(close_com_port)) { LOGD(TAG "write data to pc fail\n"); } close_usb(); while(is_USB_State_PlugIn()) { sleep(1); } sleep(2); while(!is_USB_State_PlugIn()) { sleep(1); } ret = write(fd_suspend, s_state_on, strlen(s_state_on)); close(fd_suspend); LOGD(TAG "%s: exit from suspend\n", __FUNCTION__); usb_plug_in = 1; } close(fd_mdm); /* Turn on backlight */ ret = write(fd_backlight, s_backlight_on, strlen(s_backlight_on)); close(fd_backlight); #ifdef MTK_ENABLE_MD1 #ifdef MTK_MD_SHUT_DOWN_NT ExitFlightMode_PowerOffModem(fd_atcmd,fd_ioctl,TRUE); closeDevice(fd_ioctl); #endif closeDevice(fd_atcmd); #endif #ifdef MTK_ENABLE_MD2 #ifdef MTK_MD_SHUT_DOWN_NT ExitFlightMode_PowerOffModem(fd_atcmd2,fd_ioctlmd2,TRUE); closeDevice(fd_ioctlmd2); #endif closeDevice(fd_atcmd2); #endif #if defined(MTK_EXTERNAL_MODEM_SLOT) && !defined(EVDO_DT_SUPPORT) closeDevice(fd_atcmd_dt); #endif idle->mod->test_result = FTM_TEST_PASS; return 0; }
//#else int mAudio_headset_manual_entry(struct ftm_param *param, void *priv) { char *ptr; int chosen; bool exit = false; char *inputType = NULL; struct headset *hds = (struct headset *)priv; struct textview *tv; struct itemview *iv; int privChosen = -1; LOGD(TAG "%s\n", __FUNCTION__); init_text(&hds->title, param->name, COLOR_YELLOW); init_text(&hds->text, &hds->info[0], COLOR_YELLOW); init_text(&hds->left_btn, "Fail", COLOR_YELLOW); init_text(&hds->center_btn, "Pass", COLOR_YELLOW); init_text(&hds->right_btn, "Back", COLOR_YELLOW); headset_update_info(hds, hds->info); hds->exit_thd = false; if (!hds->iv) { iv = ui_new_itemview(); if (!iv) { LOGD(TAG "No memory"); return -1; } hds->iv = iv; } iv = hds->iv; iv->set_title(iv, &hds->title); if (get_is_ata() == 0) { iv->set_items(iv, headset_items, 0); } else { iv->set_items(iv, headset_items_ex, 0); } iv->set_text(iv, &hds->text); Common_Audio_init(); pthread_create(&hds->headset_update_thd, NULL, headset_update_iv_thread, priv); inputType = ftm_get_prop("Audio.Manual.InputType"); if (inputType != NULL && (atoi(inputType) == 0 || atoi(inputType) == 1 || atoi(inputType) == 2 || atoi(inputType) == 3)) { // @ input != NULL, PC command control mode ALOGD("Audio.Manual.InputType = %s", inputType); iv->redraw(iv); PhoneMic_EarphoneLR_Loopback(MIC1_OFF); usleep(20000); if (atoi(inputType) == 1) { ALOGD("Set Mic1 on"); PhoneMic_EarphoneLR_Loopback(MIC1_ON); } else if (atoi(inputType) == 2) { ALOGD("Set Mic2 on"); PhoneMic_EarphoneLR_Loopback(MIC2_ON); } else if (atoi(inputType) == 3) { ALOGD("Set headset Mic on"); HeadsetMic_EarphoneLR_Loopback(1, 1); } hds->exit_thd = true; pthread_join(hds->headset_update_thd, NULL); hds->mod->test_result = FTM_TEST_PASS; if (atoi(inputType) == 0) { ALOGD("Audio Deinit"); Common_Audio_deinit(); } } else { // Original manual operating mode do { chosen = iv->run(iv, &exit); switch (chosen) { case ITEM_RINGTONE: if (!hds->avail || privChosen == ITEM_RINGTONE) { break; } if (privChosen == ITEM_HEADSET_MIC && hds->Headset_mic) { HeadsetMic_EarphoneLR_Loopback(0, 1); } usleep(20000); EarphoneTest(1); privChosen = ITEM_RINGTONE; break; case ITEM_MIC1: if (!hds->avail || privChosen == ITEM_MIC1) { break; } if (privChosen == ITEM_RINGTONE) { EarphoneTest(0); } else if (privChosen == ITEM_MIC2) { PhoneMic_EarphoneLR_Loopback(MIC2_OFF); } else if (privChosen == ITEM_HEADSET_MIC) { HeadsetMic_EarphoneLR_Loopback(0, 1); } usleep(20000); PhoneMic_EarphoneLR_Loopback(MIC1_ON); privChosen = ITEM_MIC1; break; case ITEM_MIC2: if (!hds->avail || privChosen == ITEM_MIC2) { break; } if (privChosen == ITEM_RINGTONE) { EarphoneTest(0); } else if (privChosen == ITEM_MIC1) { PhoneMic_EarphoneLR_Loopback(MIC1_OFF); } else if (privChosen == ITEM_HEADSET_MIC) { HeadsetMic_EarphoneLR_Loopback(0, 1); } usleep(20000); PhoneMic_EarphoneLR_Loopback(MIC2_ON); privChosen = ITEM_MIC2; break; case ITEM_HEADSET_MIC: if (!hds->avail || privChosen == ITEM_HEADSET_MIC || !hds->Headset_mic) { break; } if (privChosen == ITEM_RINGTONE) { EarphoneTest(0); } else if (privChosen == ITEM_MIC1) { PhoneMic_EarphoneLR_Loopback(MIC1_OFF); } else if (privChosen == ITEM_MIC2) { PhoneMic_EarphoneLR_Loopback(MIC2_OFF); } usleep(20000); HeadsetMic_EarphoneLR_Loopback(1, 1); privChosen = ITEM_HEADSET_MIC; break; case ITEM_PASS: case ITEM_FAIL: if (chosen == ITEM_PASS) { hds->mod->test_result = FTM_TEST_PASS; } else if (chosen == ITEM_FAIL) { hds->mod->test_result = FTM_TEST_FAIL; } exit = true; break; } if (exit) { hds->exit_thd = true; break; } } while (1); if (privChosen == ITEM_RINGTONE) { EarphoneTest(0); } if (privChosen == ITEM_MIC1) { PhoneMic_EarphoneLR_Loopback(MIC1_OFF); } if (privChosen == ITEM_MIC2) { PhoneMic_EarphoneLR_Loopback(MIC2_OFF); } if (privChosen == ITEM_HEADSET_MIC) { HeadsetMic_EarphoneLR_Loopback(0, 1); } pthread_join(hds->headset_update_thd, NULL); Common_Audio_deinit(); } return 0; }
/*---------------------------------------------------------------------------*/ int alsps_entry(struct ftm_param *param, void *priv) { char *ptr; int chosen; struct lps_data *dat = (struct lps_data *)priv; struct textview *tv; struct itemview *iv; struct statfs stat; int err; LOGD(TAG "%s\n", __FUNCTION__); init_text(&dat->title, param->name, COLOR_YELLOW); init_text(&dat->text, &dat->info[0], COLOR_YELLOW); init_text(&dat->left_btn, uistr_info_sensor_fail, COLOR_YELLOW); init_text(&dat->center_btn, uistr_info_sensor_pass, COLOR_YELLOW); init_text(&dat->right_btn, uistr_info_sensor_back, COLOR_YELLOW); snprintf(dat->info, sizeof(dat->info), uistr_info_sensor_initializing); dat->exit_thd = false; if (!dat->iv) { iv = ui_new_itemview(); if (!iv) { LOGD(TAG "No memory"); return -1; } dat->iv = iv; } iv = dat->iv; iv->set_title(iv, &dat->title); iv->set_items(iv, alsps_items, 0); iv->set_text(iv, &dat->text); if(get_is_ata() == 1){ support_ata = true; } pthread_create(&dat->update_thd, NULL, alsps_update_iv_thread, priv); do { if(!support_ata){ chosen = iv->run(iv, &thread_exit); switch (chosen) { case ITEM_PASS: case ITEM_FAIL: if (chosen == ITEM_PASS) { dat->mod->test_result = FTM_TEST_PASS; } else if (chosen == ITEM_FAIL) { dat->mod->test_result = FTM_TEST_FAIL; } thread_exit = true; break; } } iv->redraw(iv); pthread_mutex_lock (&alsps_mutex); if (thread_exit) { dat->exit_thd = true; pthread_mutex_unlock (&alsps_mutex); break; }else{ pthread_mutex_unlock (&alsps_mutex); usleep(50000); } } while (1); pthread_join(dat->update_thd, NULL); return 0; }
static int keys_entry(struct ftm_param *param, void *priv) { int i, err, num = 0; int x = 0, y = CHAR_HEIGHT; bool exit; static char buf[128]; struct keys *keys = (struct keys *)priv; struct textview *tv = &keys->tv; //struct itemview *iv = keys->iv; err = 0; err = kpd_open(); if(err != 0){ LOGD(TAG "Couldn't open kpd device!\n"); } keys->pstart = 0; #if( !defined(FACTORY_TP_KEY_TEST))||defined(CKT_SUPPORT_AUTOTEST_MODE) keys->pnum = (KEYS_NUM_KEYS <= KEYS_KEY_PER_PAGE ? KEYS_NUM_KEYS : KEYS_KEY_PER_PAGE); #else keys->pnum = (KEYS_NUM_KEYS_ALL <= KEYS_KEY_PER_PAGE ? KEYS_NUM_KEYS_ALL : KEYS_KEY_PER_PAGE); #endif keys->ptested = 0; #if( !defined(FACTORY_TP_KEY_TEST))||defined(CKT_SUPPORT_AUTOTEST_MODE) keys->untested = KEYS_NUM_KEYS; #else keys->untested = KEYS_NUM_KEYS_ALL; #endif init_text(&keys->title, param->name, COLOR_YELLOW); #if( !defined(FACTORY_TP_KEY_TEST))||defined(CKT_SUPPORT_AUTOTEST_MODE) for (i = 0; i < KEYS_NUM_KEYS; i++) { if (keys_keymap[i].code == CUST_KEY_CONFIRM || keys_keymap[i].code == get_confirm_key()) { keys->cfm_i = i; keys->cfm_cnt = 0; } init_ctext(&keys_ctext[i], keys_keymap[i].name, COLOR_YELLOW, x, y); num++; x += KEYS_COL_WIDTH_NEW; if (!(num % KEYS_NUM_COLS_NEW)) { x = 0; y += CHAR_HEIGHT; if (num == KEYS_KEY_PER_PAGE) { /* next page */ y = CHAR_HEIGHT; num = 0; } } } #else for (i = 0; i < KEYS_NUM_KEYS_ALL; i++) { if(i<KEYS_NUM_KEYS){ if (keys_keymap[i].code == CUST_KEY_CONFIRM || keys_keymap[i].code == get_confirm_key()) { keys->cfm_i = i; keys->cfm_cnt = 0; } init_ctext(&keys_ctext[i], keys_keymap[i].name, COLOR_YELLOW, x, y); } else{ if (TPkeys_keymap[i-KEYS_NUM_KEYS].code == CUST_KEY_CONFIRM) { keys->cfm_i = i; keys->cfm_cnt = 0; } init_ctext(&keys_ctext[i], TPkeys_keymap[i-KEYS_NUM_KEYS].name, COLOR_YELLOW, x, y); } num++; x += KEYS_COL_WIDTH_NEW; if (!(num % KEYS_NUM_COLS_NEW)) { x = 0; y += CHAR_HEIGHT; if (num == KEYS_KEY_PER_PAGE) { /* next page */ y = CHAR_HEIGHT; num = 0; } } } #endif ui_init_textview(tv, keys_key_handler, (void*)keys); tv->set_title(tv, &keys->title); tv->set_ctext(tv, keys_ctext, keys->pnum); #ifdef CKT_SUPPORT_AUTOTEST_MODE /*******************auto test part***********************/ if(get_is_ata()) pthread_create(&keys->update_thd, NULL, kpd_update_iv_thread, priv); /*****************************************************/ #endif tv->run(tv); /* finish testing */ /*iv->set_title(iv, &keys->title); iv->set_items(iv, keys_item, ITEM_PASS); while (1) { num = iv->run(iv, &exit); if (num == ITEM_PASS) { keys->mod->test_result = FTM_TEST_PASS; exit = true; } else if (num == ITEM_FAIL) { keys->mod->test_result = FTM_TEST_FAIL; exit = true; } if (exit) break; }*/ return 0; }