Exemplo n.º 1
0
static void read_preferred_magnitude(int *pUpper, int *pLower)
{
    char *pMagLower = NULL, *pMagUpper = NULL;
    char uMagLower[64], uMagUpper[64];

    *pUpper = 0;
    *pLower = 0;
    memset(uMagLower, 0, sizeof(uMagLower));
    memset(uMagUpper, 0, sizeof(uMagUpper));

    sprintf(uMagLower, "Lower.Magnitude.Headset");
    sprintf(uMagUpper, "Upper.Magnitude.Headset");

    pMagLower = ftm_get_prop(uMagLower);
    pMagUpper = ftm_get_prop(uMagUpper);
    if (pMagLower != NULL && pMagUpper != NULL)
    {
        *pLower = (int)atoi(pMagLower);
        *pUpper = (int)atoi(pMagUpper);
        ALOGD("Lower.Magnitude:%d,Upper.Magnitude:%d\n", *pLower, *pUpper);
    }
    else
    {
        ALOGD("Lower/Upper.Magnitude can not get\n");
    }
}
Exemplo n.º 2
0
static bool read_preferred_recorddump(void)
{
    char *pDump = NULL;
    char uName[64];

    memset(uName, 0, sizeof(uName));
    sprintf(uName, "Audio.Record.Dump");
    pDump = ftm_get_prop(uName);
    ALOGD("pDump:%s", pDump);

    if (pDump != NULL)
    {
        if (!strcmp(pDump, "1"))
        {
            ALOGD("Dump record data");
            return true;
        }
        else
        {
            ALOGD("No need to dump record data");
            return false;
        }
    }
    else
    {
        ALOGD("Dump record prop can't get");
        return false;
    }
}
Exemplo n.º 3
0
int vibrator_entry(struct ftm_param *param, void *priv)
{	
    char *bPhone = NULL;
    struct mVibrator *mc = (struct mVibrator *)priv;
    
    bPhone = ftm_get_prop("Vibrator.PhoneAutoTest");
    if ((bPhone != NULL) && (atoi(bPhone) == 1)) // Auto detect
    {
        vibrator_autotest_entry(param, priv);
        item_testing = 0; // for Auto test, no need to send AT+VIBRATOR=STOP
    }
    else
    {
        vibrator_manual_entry(param, (void*)(mc->mod));
    }

	return 0;
}
Exemplo n.º 4
0
int headset_entry(struct ftm_param *param, void *priv)
{
    struct headset *mc = (struct headset *)priv;
    char *outputType = NULL;

    if (FTM_AUTO_ITEM == param->test_type)
    {
        outputType = ftm_get_prop("Audio.Auto.OutputType");
        ALOGD("Audio.Auto.OutputType = %s\n", outputType);

        if (outputType == NULL)
        {
            // @ default PCBA level, Headset receiver -> headset mic
            mc->isPhoneTest = false;
            mAudio_headset_auto_entry(param, priv);
        }
        else
        {
            if (atoi(outputType) == 0) // @ PCBA level, Headset receiver -> headset mic
            {
                mc->isPhoneTest = false;
                mAudio_headset_auto_entry(param, priv);
            }
            else if (atoi(outputType) == 1) //@ Phone level,  Headset receiver -> phone mic
            {
                mc->isPhoneTest = true;
                headset_PhoneTest_entry(param, priv);
            }
            else if (atoi(outputType) == 2) // @ Phone level, THD, Headset receiver-->phone mic
            {
                mc->isPhoneTest = true;
                headset_thd_entry(param, priv);
            }
        }
    }
    else if (FTM_MANUAL_ITEM == param->test_type)
    {
        mAudio_headset_manual_entry(param, priv);
    }

    return 0;
}
Exemplo n.º 5
0
 int read_preferred_para(const char *pstr,int default_value)
{
    int value = default_value;
    unsigned int i = 0;
    char *pVal = NULL;

    if(pstr== NULL)
    {
        LOGD(TAG "preferred_receiver_para error %s", pstr);
        return 0;
    }
    pVal = ftm_get_prop(pstr);
    if (pVal != NULL){
        value = (int)atoi(pVal);
        LOGD(TAG "preferred_receiver_para %s- %d \n",pstr,value);
    }
    else{
        LOGD(TAG "preferred_receiver_para can't get %s , use default %d\n", pstr, value);
    }
    return value;
}
Exemplo n.º 6
0
/********************
 * Function Declaration
 *********************/
 int matv_read_preferred_para(const char *pstr)
{
    int value = 0;
    unsigned int i = 0;
    char *pTime = NULL;

    if(pstr== NULL)
    {
        ALOGD("matv_read_preferred_para error %s", pstr);
        return 0;
    }
    pTime = ftm_get_prop(pstr);
    if (pTime != NULL){
        value = (int)atoi(pTime);
        ALOGD("preferred_receiver_para %s- %d \n",pstr,value);
    }
    else{
        ALOGD("preferred_receiver_para can't get %s\n", pstr);
    }
    return value;
}
Exemplo n.º 7
0
static void read_preferred_freq()
{
    uint16_t tmp_freq;
    unsigned int i = 0;
    char *pFreq = NULL;
    char channel_no[64]; //max path
    
    for(i = 0; i < sizeof(fmtx_freq_list)/sizeof(fmtx_freq_list[0]); i++)
    {
        memset(channel_no, 0, sizeof(channel_no));
        sprintf(channel_no, "FMTX.CH%d", i+1);
        pFreq = ftm_get_prop(channel_no);
        
        if(pFreq != NULL){
            fmtx_freq_list[i] = (uint16_t)atoi(pFreq);
	        LOGD("preferred_freq: %d, %d\n", i, fmtx_freq_list[i]);
	    }
	    else
	    {
	        LOGD("preferred_freq %d can't get\n", i);
	    }
    }   
}
Exemplo n.º 8
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;
}
Exemplo n.º 9
0
int gps_entry(struct ftm_param *param, void *priv)
{
    char *ptr;
    char *pTimeout=NULL;
    int chosen;
    bool exit = false;
    struct gps_desc *gps = (struct gps_desc *)priv;
    struct itemview *iv;
	pTimeout = ftm_get_prop("GPS.TIMEOUT");
	if(pTimeout != NULL )
	{
		timeout=atoi(pTimeout);
		LOGD(TAG "timeout value is %d\n", timeout);	
	}
    LOGD(TAG "%s\n", __FUNCTION__);

    init_text(&gps->title, param->name, COLOR_YELLOW);
    init_text(&gps->text, &gps->info[0], COLOR_YELLOW);
    
    gps_update_info(gps, gps->info);
   
    gps->exit_thd = false;

    if (!gps->iv) {
        iv = ui_new_itemview();
        if (!iv) {
            LOGD(TAG "No memory");
            return -1;
        }
        gps->iv = iv;
    }
    
    iv = gps->iv;
    iv->set_title(iv, &gps->title);
    iv->set_items(iv, gps_items, 0);
    iv->set_text(iv, &gps->text);
    
	iv->start_menu(iv,0);
    pthread_create(&gps->update_thd, NULL, gps_update_iv_thread, priv);
    int wait_time = 10;
    int init_try_time = 0;
    while(!init_flag && wait_time)
    {
    	LOGD(TAG" init_flag = %d, try time = %d\n", init_flag, ++init_try_time);
    	sleep(1);
    	--wait_time;	
    }
    init_flag = 0;
    wait_time = 10;
    init_try_time = 0;
    LOGD(TAG" init_flag = %d\n", init_flag);
	iv->redraw(iv);
    do{
        //Auto test: only CTTFF
        cttff = 1;
        do{
            usleep(1000000); //check status per sec
            LOGD(TAG"after %d sec from test starting, we still can not see any SV\n", ttff);
        }while(ttff <= timeout && !ttff_check_res);

        if(ttff_check_res == 1){
            LOGD(TAG"Test pass"); 
            gps->mod->test_result = FTM_TEST_PASS;
	      }else{
            LOGD(TAG"Test fail");
            gps->mod->test_result = FTM_TEST_FAIL;		
        }
		if(unlink("/data/misc/mtkgps.dat")!=0 )
			LOGD(TAG "unlink mtkgps.dat error, error is %s\n", strerror(errno));
		    ttff_check_res = 0;

     }while(0);
     
    gps->exit_thd = true;
    LOGD(TAG "%s, gps->exit_thd = true\n", __FUNCTION__);    
#if 0
    do {
        chosen = iv->run(iv, &exit);
        LOGD(TAG "%s, chosen = %d\n", __FUNCTION__, chosen);
        switch (chosen) {
        case ITEM_HTTFF:
            httff = 1;
            break;
        case ITEM_CTTFF:
            cttff = 1;
            break;
        case ITEM_PASS:
        case ITEM_FAIL:
            if (chosen == ITEM_PASS) {
                gps->mod->test_result = FTM_TEST_PASS;
            } else if (chosen == ITEM_FAIL) {
                gps->mod->test_result = FTM_TEST_FAIL;
            }           
            exit = true;
            break;
        }
        
        if (exit) {
            gps->exit_thd = true;
            LOGD(TAG "%s, gps->exit_thd = true\n", __FUNCTION__);
            break;
        }        
    } while (1);
#endif
    pthread_join(gps->update_thd, NULL);

    return 0;
}
Exemplo n.º 10
0
int vibrator_manual_entry(struct ftm_param *param, void *priv)
{
	int chosen;
	bool exit = false;
	struct itemview *iv;
	text_t    title;
	char* vibr_time = NULL;
	struct ftm_module *mod = (struct ftm_module *)priv;

	LOGD("%s\n", __FUNCTION__);

	vibrator_test_exit = false;

	iv = ui_new_itemview();
	if (!iv) {
		LOGD("No memory");
		return -1;
	}
        init_text(&title, param->name, COLOR_YELLOW);

	iv->set_title(iv, &title);
	iv->set_items(iv, items, 0);

	vibr_time = ftm_get_prop("Vibrator_Last_Time");
	LOGD("%s: get vibrator last time=%s!\n", __FUNCTION__, vibr_time);
	if(vibr_time != NULL)
	{
		vibrator_time = (uint32_t)atoi(vibr_time);
		LOGD("%s: get vibrator last time=%d!\n", __FUNCTION__, vibrator_time);
	}
	else
	{
		LOGD("%s: get vibrator last time fail!\n", __FUNCTION__);
	}
//#if defined(MTK_VIBSPK_SUPPORT)
    if (IsFTMSupportVibSpk())
     Common_Audio_init();
//#endif
	pthread_create(&vibrator_thread, NULL, update_vibrator_thread, priv);
	
	iv->start_menu(iv, 0);
	iv->redraw(iv);
	do {
		if(param->test_type == FTM_MANUAL_ITEM){
		chosen = iv->run(iv, &exit);
		switch (chosen) {
		case ITEM_PASS:
		case ITEM_FAIL:
			if (chosen == ITEM_PASS) {
				mod->test_result = FTM_TEST_PASS;
			} else if (chosen == ITEM_FAIL) {
				mod->test_result = FTM_TEST_FAIL;
			}
			exit = true;
			break;
		}

		if (exit) {
			vibrator_test_exit = true;
			break;
		}
		}
		else{
			if(vibrator_test_exit)
				break;
		}
	} while (1);
	//pthread_join(vibrator_thread, NULL);

//    #if defined(MTK_VIBSPK_SUPPORT)
    if (IsFTMSupportVibSpk())
    Common_Audio_deinit();
//    #endif

	return 0;
}