Пример #1
0
signed int SerPort::open(const char *path)
{
	signed int fd = ::open(path, O_RDWR|O_NOCTTY);

	META_LOG("[Meta] Open serPort. m_fd = %d", fd);

	if (fd != NULL_FILE_DESCRIPTOR)
	{
		META_LOG("[Meta] Open serport:(%s) success.", path);
		initTermIO(fd);
	}
	else
	{
		META_LOG("[Meta] Open serport:(%s) fail, error code = %d", path, errno);
	}
	
	return fd;
}
Пример #2
0
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;
}
Пример #3
0
int sigtest_entry(struct ftm_param *param, void *priv)
{
    char *ptr;
    int chosen, i;
    bool exit = false;
    struct sigtest *st = (struct sigtest *)priv;
    struct itemview *iv;
    int ret;
    const char *pret;

    LOGD(TAG "%s\n", __FUNCTION__);
#ifdef MTK_DT_SUPPORT

	st->fd_atmd = openDeviceWithDeviceName(CCCI_MODEM_MT6575);
    if (-1 == st->fd_atmd) {
				LOGD(TAG "Fail to open CCCI interface\n");
				return 0;
    }

	st->fd_atmd2 = openDeviceWithDeviceName(CCCI_MODEM_MT6252);
    if (-1 == st->fd_atmd2) {
				LOGD(TAG "Fail to open CCCI interface\n");
				return 0;
    }
	initTermIO(st->fd_atmd2,5);

#else	
	st->fd_atmd = openDevice();
    if(-1 == st->fd_atmd) {
 		LOGD(TAG "Fail to open CCCI interface\n");
		return 0;
    }
#endif

	for (i = 0; i<30; i++) usleep(50000); //sleep 1s wait for modem bootup
	
	ExitFlightMode (st->fd_atmd, TRUE);
	
#ifdef MTK_DT_SUPPORT
	ExitFlightMode_DualTalk (st->fd_atmd2, TRUE);
#endif

    init_text(&st->title, param->name, COLOR_YELLOW);
    init_text(&st->text, &st->info[0], COLOR_YELLOW);   

    //sigtest_update_info(st, st->info);
    sprintf(st->info, "%s", "Emergency call is not started!\n");
    st->exit_thd = false;

    if (!st->iv) {
        iv = ui_new_itemview();
        if (!iv) {
            LOGD(TAG "No memory");
            return -1;
        }
        st->iv = iv;
    }
    
    iv = st->iv;
    iv->set_title(iv, &st->title);
    iv->set_items(iv, sigtest_items, 0);
    iv->set_text(iv, &st->text); 

    do {
        chosen = iv->run(iv, &exit);
        switch (chosen) {
#ifdef MTK_DT_SUPPORT
			  case ITEM_CALL_FOR_MODEM_75:
					pret = dial112(st->fd_atmd);
					if(!strcmp(pret, "OK")) {
		                 LOGD(TAG "Dial 112 Success\n");
		                 sprintf(st->info, "%s\n", "Dial 112 Success!\n");
		           }
					else {
						LOGD(TAG "Dial 112 Fail\n");
						sprintf(st->info, "%s\n", "Dial 112 Fail!\n");
					}
					iv->redraw(iv);
					break;

			  case ITEM_CALL_FOR_MODEM_52:
					pret = dial112(st->fd_atmd2);
					if(!strcmp(pret, "OK")) {
		                 LOGD(TAG "Dial 112 Success\n");
		                 sprintf(st->info, "%s\n", "Dial 112 Success!\n");
		           }
					else {
						LOGD(TAG "Dial 112 Fail\n");
						sprintf(st->info, "%s\n", "Dial 112 Fail!\n");
					}
					iv->redraw(iv);
					break;
#else
            case ITEM_EMG_CALL:
               	   LOGD(TAG "Come to EMG Call...\n");

//mtk70828
				   sprintf(st->info, "%s\n", "Dial 112 on going ...!\n");
				   iv->redraw(iv);
//mtk70828
		           pret = dial112(st->fd_atmd);
		           if(!strcmp(pret, "OK")) {
		                 LOGD(TAG "Dial 112 Success\n");
		                 sprintf(st->info, "%s\n", "Dial 112 Success!\n");
		           }
					else {
						LOGD(TAG "Dial 112 Fail\n");
						sprintf(st->info, "%s\n", "Dial 112 Fail!\n");
					}
					iv->redraw(iv);
                             
                break;
#endif
            case ITEM_PASS:
            case ITEM_FAIL:
                if (chosen == ITEM_PASS) {
                    st->mod->test_result = FTM_TEST_PASS;
                } else if (chosen == ITEM_FAIL) {
                    st->mod->test_result = FTM_TEST_FAIL;
                }          
                exit = true;
                break;
        }
        
        if (exit) {
            st->exit_thd = true;
            // Need to add ATH command else the loop back test will have noise.
			ExitFlightMode (st->fd_atmd, FALSE);
				
#ifdef MTK_DT_SUPPORT
	ExitFlightMode_DualTalk (st->fd_atmd2, FALSE);
#endif
            break;
        }        
    } while (1);
    closeDevice(st->fd_atmd);
		
#ifdef MTK_DT_SUPPORT
	closeDevice (st->fd_atmd2);
#endif

    return 0;
}