[Bugfix][API-967][GPIO]optimize thegpio test paln for factory
Change-Id: I4e8cb36a874f99023e1cd8e9c61b387ddf804b22
diff --git a/src/lynq/framework/lynq-ril-service/src/factory/lynq_factory.cpp b/src/lynq/framework/lynq-ril-service/src/factory/lynq_factory.cpp
index e040eb4..ff19b9c 100755
--- a/src/lynq/framework/lynq-ril-service/src/factory/lynq_factory.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/factory/lynq_factory.cpp
@@ -220,7 +220,7 @@
/**
* @brief factory test for sgmii
- *
+ *
*/
void *thread_test_SGMII_wtf(void *arg){
FILE *fp;
@@ -250,7 +250,7 @@
/**
* @brief factory test for sgmii
- *
+ *
*/
static void lynq_test_SGMII(char *argv){
if(argv == NULL)
@@ -295,7 +295,7 @@
}
static void lynq_gps_enable(void){
-
+
enable_nema = 1;
lynq_factory_response_ttyGS3("+GPS ENABLE:OK\n");
return;
@@ -365,7 +365,7 @@
fp=popen(lynq_usb_dev, "r");
fgets(lynq_usb_buf,sizeof(lynq_usb_buf),fp);
if(!strncmp(lynq_usb_buf,usb3_speed,strlen(usb3_speed)))
- {
+ {
lynq_factory_response_ttyGS3("[usb][result],3.0 \n");
lynq_factory_response_ttyGS3("OK\n");
}
@@ -387,7 +387,7 @@
system("echo write_reg,0x002c,0x0008 > /sys/kernel/debug/mtksocaudio");
system("echo write_reg,0x0030,0x0010 > /sys/kernel/debug/mtksocaudio");
sprintf(lynq_adudio_time_arr,"arecord -D plughw:0,1 --buffer-size=1024 -r 16000 -d %s -f S16_LE -c1 | aplay -D plughw:0,7 --buffer-size=1024 -r 16000 -d %s -f S16_LE -c1",lynq_argv,lynq_argv);
-// system("arecord -D plughw:0,1 --buffer-size=1024 -r 16000 -d 2 -f S16_LE -c1 | aplay -D plughw:0,7 --buffer-size=1024 -r 16000 -d 2 -f S16_LE -c1 ");
+ // system("arecord -D plughw:0,1 --buffer-size=1024 -r 16000 -d 2 -f S16_LE -c1 | aplay -D plughw:0,7 --buffer-size=1024 -r 16000 -d 2 -f S16_LE -c1 ");
system(lynq_adudio_time_arr);
free(lynq_argv);
lynq_argv = NULL;
@@ -404,8 +404,8 @@
if(lynq_audio_time != NULL)
{
memcpy(lynq_audio_time,argv[4],strlen(argv[4]));
- }
- ret=pthread_create(&id,NULL,lynq_deal_witch_audio,(char *)lynq_audio_time);
+ }
+ ret=pthread_create(&id,NULL,lynq_deal_witch_audio,(char *)lynq_audio_time);
if(ret!=0)
{
return ret;
@@ -426,104 +426,185 @@
return -1;
}
while(fgets(buf, sizeof(buf), fp) != NULL){
- lynq_factory_response_ttyGS3("+EMMC: OK \n");
+ lynq_factory_response_ttyGS3("+EMMC: OK \n");
pclose(fp);
- return 0;
+ return 0;
}
lynq_factory_response_ttyGS3("\033[47;31m+EMMC: ERROR\033[0m\n");
pclose(fp);
return 0;
}
-int lynq_check_gpio()
+static int set_all_gpio_status_and_check(int lynq_gpio_arr[], char status)
{
- #if 1
+ int m =0;
FILE *fp;
-
- int lynq_gpio_arr[85] = {230,231,232,233,234,102,104,103,101,186 ,188 ,187 ,185 ,194 ,196 ,195 ,193 ,205 ,204 ,203 ,202, 201 ,190 ,192 ,191 ,189 ,173 ,174 ,175 ,176 ,170 ,169 ,184 ,183 ,182 ,181 ,24 ,25 ,157 ,158 ,155 ,156 ,143 ,144 ,140 ,141 ,153 ,154 ,180 ,179 ,29 ,30 ,178, 177, 7 ,5 ,4 ,113 ,112, 116 ,115 ,114, 107, 108, 105, 106, 100 ,99 ,98, 97, 94, 93, 92, 91, 1 ,130 ,41 ,67 ,69, 68, 63, 22, 23, 199, 200};
char lynq_set_gpio_arr[256] = {0};
char lynq_get_gpio_state[512] = {0};
- char lynq_show_gpio_state[64] = {0};
- int lynq_gpio_low = 0;
- int lynq_gpio_hig = 0;
- int i = 0,m = 0;
- int lynq_gpio_beta_state = 1;
-
for(m = 0; m < 85; m++)
{
bzero(lynq_set_gpio_arr, 256);
sprintf(lynq_set_gpio_arr,"echo mode %d 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[m]);
system(lynq_set_gpio_arr);
bzero(lynq_set_gpio_arr, 256);
- sprintf(lynq_set_gpio_arr,"echo out %d 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[m]);
+ sprintf(lynq_set_gpio_arr,"echo out %d %c > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[m], status);
system(lynq_set_gpio_arr);
}
- for(i = 0; i < 85; i++)
+ bzero(lynq_set_gpio_arr, 256);
+ sprintf(lynq_set_gpio_arr,"cat /sys/devices/platform/10005000.pinctrl/mt_gpio | grep 006");
+ fp=popen(lynq_set_gpio_arr, "r");
+ bzero(lynq_get_gpio_state, 512);
+ fgets(lynq_get_gpio_state,sizeof(lynq_get_gpio_state),fp);
+ pclose(fp);
+
+ if(lynq_get_gpio_state[7] != status)
{
- lynq_gpio_low = 0;
- lynq_gpio_hig = 0;
+ return 1;
+ }
+ //usleep(10000);
+ return 0;
+}
- bzero(lynq_set_gpio_arr, 256);
- sprintf(lynq_set_gpio_arr,"echo mode %d 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[i]);
- system(lynq_set_gpio_arr);
+int lynq_check_gpio()
+{
+ FILE *fp;
+ int lynq_gpio_arr[85] = {230,231,232,233,234,102,104,103,101,186 ,188 ,187 ,185 ,194 ,196 ,195 ,193 ,205 ,204 ,203 ,202, 201 ,190 ,192 ,191 ,189 ,173 ,174 ,175 ,176 ,170 ,169 ,184 ,183 ,182 ,181 ,24 ,25 ,157 ,158 ,155 ,156 ,143 ,144 ,140 ,141 ,153 ,154 ,180 ,179 ,29 ,30 ,178, 177, 7 ,5 ,4 ,113 ,112, 116 ,115 ,114, 107, 108, 105, 106, 100 ,99 ,98, 97, 94, 93, 92, 91, 1 ,130 ,41 ,67 ,69, 68, 63, 22, 23, 199, 200};
+ char lynq_set_gpio_arr[256] = {0};
+ char lynq_get_gpio_state[512] = {0};
+ char lynq_show_gpio_state[64] = {0};
+ int lynq_gpio_low = 0;
+ int lynq_gpio_hig = 0;
+ int lynq_gpio_test_env_error = 1;
+ int i = 0,m = 0,j = 0;
+ int need_int = 1;
+ int lynq_gpio_beta_state = 1;
+ RLOGD("start function %s line %d \n", __FUNCTION__, __LINE__);
- bzero(lynq_set_gpio_arr, 256);
- sprintf(lynq_set_gpio_arr,"echo out %d 1 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[i]);
- system(lynq_set_gpio_arr);
+ for(i=0; i < 85; i++)
+ {
- bzero(lynq_set_gpio_arr, 256);
- sprintf(lynq_set_gpio_arr,"cat /sys/devices/platform/10005000.pinctrl/mt_gpio | grep 006");
- fp=popen(lynq_set_gpio_arr, "r");
- bzero(lynq_get_gpio_state, 512);
- fgets(lynq_get_gpio_state,sizeof(lynq_get_gpio_state),fp);
-/*
- if(strlen(lynq_get_gpio_state) > 0)
+ for(j=0;j<3;j++)
{
- lynq_factory_response_ttyGS3(lynq_get_gpio_state);
- lynq_factory_response_ttyGS3("\n");
- }
-*/
- pclose(fp);
- if(lynq_get_gpio_state[7] == '1')
- {
- lynq_gpio_hig = 1;
- }
+ if (j > 0) // reset gpio when retry
+ {
+ need_int = 1;
+ }
- bzero(lynq_set_gpio_arr, 256);
- sprintf(lynq_set_gpio_arr,"echo out %d 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[i]);
- system(lynq_set_gpio_arr);
-
- bzero(lynq_set_gpio_arr, 256);
- sprintf(lynq_set_gpio_arr,"cat /sys/devices/platform/10005000.pinctrl/mt_gpio | grep 006");
- fp=popen(lynq_set_gpio_arr, "r");
- bzero(lynq_get_gpio_state, 512);
- fgets(lynq_get_gpio_state,sizeof(lynq_get_gpio_state),fp);
- pclose(fp);
- if(lynq_get_gpio_state[7] == '0')
- {
- lynq_gpio_low = 1;
- }
- bzero(lynq_show_gpio_state, 64);
- if((lynq_gpio_low != 1) || (lynq_gpio_hig != 1))
+ if (need_int == 1)
+ {
+ if (set_all_gpio_status_and_check(lynq_gpio_arr, '0') != 0)
+ {
+ continue;
+ }
+ else
+ {
+ need_int = 0;
+ }
+ RLOGD("finsh peizhi function %s line %d \n", __FUNCTION__, __LINE__);
+ }
+
+ lynq_gpio_low = 0;
+ lynq_gpio_hig = 0;
+
+ for(int n=0;n<3;n++)
+ {
+ bzero(lynq_set_gpio_arr, 256);
+ sprintf(lynq_set_gpio_arr,"echo mode %d 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[i]);
+ system(lynq_set_gpio_arr);
+
+ bzero(lynq_set_gpio_arr, 256);
+ sprintf(lynq_set_gpio_arr,"echo out %d 1 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[i]);
+ system(lynq_set_gpio_arr);
+
+
+ bzero(lynq_set_gpio_arr, 256);
+ sprintf(lynq_set_gpio_arr,"cat /sys/devices/platform/10005000.pinctrl/mt_gpio | grep 006");
+ fp=popen(lynq_set_gpio_arr, "r");
+ bzero(lynq_get_gpio_state, 512);
+ fgets(lynq_get_gpio_state,sizeof(lynq_get_gpio_state),fp);
+ pclose(fp);
+ if(lynq_get_gpio_state[7] == '1')
+ {
+ RLOGD("high function %s line %d \n", __FUNCTION__, __LINE__);
+ lynq_gpio_hig = 1;
+ lynq_gpio_test_env_error = 0;
+ break;
+ }
+ else
+ {
+ RLOGD("high function %s line %d num %d\n", __FUNCTION__, __LINE__,lynq_gpio_arr[i]);
+ if(i == 0 && j == 0)
+ {
+ RLOGD(" gpio fail %s num %d \n", __FUNCTION__, lynq_gpio_arr[i]);
+ lynq_gpio_test_env_error = set_all_gpio_status_and_check(lynq_gpio_arr, '1') == 0 ? 0 : 1;
+ }
+ }
+ }
+ if (lynq_gpio_test_env_error == 1)
+ break;
+ bzero(lynq_set_gpio_arr, 256);
+ sprintf(lynq_set_gpio_arr,"echo out %d 0 > /sys/devices/platform/10005000.pinctrl/mt_gpio",(char*)lynq_gpio_arr[i]);
+ system(lynq_set_gpio_arr);
+
+ bzero(lynq_set_gpio_arr, 256);
+ sprintf(lynq_set_gpio_arr,"cat /sys/devices/platform/10005000.pinctrl/mt_gpio | grep 006");
+ fp=popen(lynq_set_gpio_arr, "r");
+ bzero(lynq_get_gpio_state, 512);
+ fgets(lynq_get_gpio_state,sizeof(lynq_get_gpio_state),fp);
+ pclose(fp);
+ if(lynq_get_gpio_state[7] == '0')
+ {
+ RLOGI("*low function %s line %d \n", __FUNCTION__, __LINE__);
+ lynq_gpio_low = 1;
+ }
+ else
+ {
+ RLOGD("low function fail %s line %d num %d\n", __FUNCTION__, __LINE__,lynq_gpio_arr[i]);
+ }
+ bzero(lynq_show_gpio_state, 64);
+ if((lynq_gpio_low != 1) || (lynq_gpio_hig != 1))
+ {
+ RLOGD(" function fail %s line %d num %d\n", __FUNCTION__, __LINE__,lynq_gpio_arr[i]);
+ }
+ else
+ {
+ RLOGD("success function %s line %d\n", __FUNCTION__, __LINE__);
+ sprintf(lynq_show_gpio_state,"gpio%d\n",lynq_gpio_arr[i]);
+ lynq_factory_response_ttyGS3(lynq_show_gpio_state);
+ break; // do not retry when pass
+ }
+ } // for(j=0;j<3;j++)
+ if (lynq_gpio_test_env_error == 1)
{
lynq_gpio_beta_state = 0;
- sprintf(lynq_show_gpio_state,"[gpio%d][result]:FAIL \n",(char *)lynq_gpio_arr[i]);
- lynq_factory_response_ttyGS3(lynq_show_gpio_state);
+ break;
}
- else
+ if (j >= 3 )
{
- sprintf(lynq_show_gpio_state,"gpio%d\n",(char *)lynq_gpio_arr[i]);
+ lynq_gpio_beta_state = 0;
+ sprintf(lynq_show_gpio_state,"[gpio%d][result]:FAIL \n",lynq_gpio_arr[i]);
lynq_factory_response_ttyGS3(lynq_show_gpio_state);
}
+
+ } // for(i=0; i < 85; i++)
+
+ if(lynq_gpio_test_env_error == 1)
+ {
+ sprintf(lynq_show_gpio_state,"tool error \n");
+ lynq_factory_response_ttyGS3(lynq_show_gpio_state);
}
+
if(lynq_gpio_beta_state == 1)
{
sprintf(lynq_show_gpio_state,"[gpio][result]:PASS \n");
lynq_factory_response_ttyGS3(lynq_show_gpio_state);
}
- return 0;
- #endif
+ else
+ {
+ sprintf(lynq_show_gpio_state,"[gpio][result]:FAIL \n");
+ lynq_factory_response_ttyGS3(lynq_show_gpio_state);
+ }
}
int lynq_test_sink(){
@@ -550,7 +631,7 @@
usleep(10000);
sprintf(lynq_usb_buf,"cat /sys/bus/iio/devices/iio:device1/in_voltage4_input 2>&1");
fp=popen(lynq_usb_buf, "r");
-
+
fgets(buf, sizeof(buf), fp);
sprintf(flag_buf, "%s%d%s%s%s", "SINK[", i+1, "]: ", buf, "\n");
lynq_factory_response_ttyGS3(flag_buf);
@@ -616,52 +697,52 @@
RequestInfo* info = creatRILInfoAndInit(request, INIT, (RIL_SOCKET_ID) ((id)));
info->lynqEvent = 1;
switch(request){
- case RIL_REQUEST_DEVICE_IDENTITY:
- {
- getDeviceIdentity(1, NULL, (RIL_SOCKET_ID) ((id)), info);
- break;
+ case RIL_REQUEST_DEVICE_IDENTITY:
+ {
+ getDeviceIdentity(1, NULL, (RIL_SOCKET_ID) ((id)), info);
+ break;
+ }
+ case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE:
+ {
+ getPreferredNetworkType(1, NULL, (RIL_SOCKET_ID) ((id)), info);
+ break;
+ }
+ case RIL_REQUEST_GET_SIM_STATUS:
+ {
+ getIccCardStatus(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_DATA_REGISTRATION_STATE:
+ {
+ getDataRegistrationState(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_VOICE_REGISTRATION_STATE:
+ {
+ getVoiceRegistrationState(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_VOICE_RADIO_TECH:
+ {
+ getVoiceRadioTechnology(1, NULL, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_OEM_HOOK_RAW:
+ {
+ char* tmp[2] = {"RIL_REQUEST_OEM_HOOK_RAW", "AT+ECAL"};
+ sendATCMD(2, tmp, (RIL_SOCKET_ID) (id), info);
+ break;
+ }
+ case RIL_REQUEST_GET_RADIO_CAPABILITY:
+ {
+ getRadioCapability(1, NULL, (RIL_SOCKET_ID) ((id)), info);
+ break;
+ }
+ default:
+ RLOGE("don't support %d in init", id);
+ if(info) {
+ free(info);
}
- case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE:
- {
- getPreferredNetworkType(1, NULL, (RIL_SOCKET_ID) ((id)), info);
- break;
- }
- case RIL_REQUEST_GET_SIM_STATUS:
- {
- getIccCardStatus(1, NULL, (RIL_SOCKET_ID) (id), info);
- break;
- }
- case RIL_REQUEST_DATA_REGISTRATION_STATE:
- {
- getDataRegistrationState(1, NULL, (RIL_SOCKET_ID) (id), info);
- break;
- }
- case RIL_REQUEST_VOICE_REGISTRATION_STATE:
- {
- getVoiceRegistrationState(1, NULL, (RIL_SOCKET_ID) (id), info);
- break;
- }
- case RIL_REQUEST_VOICE_RADIO_TECH:
- {
- getVoiceRadioTechnology(1, NULL, (RIL_SOCKET_ID) (id), info);
- break;
- }
- case RIL_REQUEST_OEM_HOOK_RAW:
- {
- char* tmp[2] = {"RIL_REQUEST_OEM_HOOK_RAW", "AT+ECAL"};
- sendATCMD(2, tmp, (RIL_SOCKET_ID) (id), info);
- break;
- }
- case RIL_REQUEST_GET_RADIO_CAPABILITY:
- {
- getRadioCapability(1, NULL, (RIL_SOCKET_ID) ((id)), info);
- break;
- }
- default:
- RLOGE("don't support %d in init", id);
- if(info) {
- free(info);
- }
}
}
@@ -702,7 +783,7 @@
}
else if((!strcmp(argv[3],"usb")))
{
- lynq_dispose_factory_usb(num,argv);
+ lynq_dispose_factory_usb(num,argv);
}
else if((!strcmp(argv[3], "emmc")))
{
@@ -721,11 +802,11 @@
lynq_nema_set(argv[4]);
}
else{
- lynq_factory_response_ttyGS3("invalid command\n");
+ lynq_factory_response_ttyGS3("invalid command\n");
}
return 0;
}
#ifdef __cplusplus
}
-#endif
\ No newline at end of file
+#endif