[Feature][T8TSK-79][Factory-test]Further optimize factory test sleep
Change-Id: Ia1e09c59801417adb4d5684e6b481a8ead2f451a
diff --git a/lib/liblynq-sim/src/lynq_sim.cpp b/lib/liblynq-sim/src/lynq_sim.cpp
index cb1729d..1fa5578 100755
--- a/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/lib/liblynq-sim/src/lynq_sim.cpp
@@ -39,6 +39,7 @@
#define RIL_REQUEST_DEVICE_IDENTITY 98
#define LYNQ_REQUEST_SET_DEFAULT_SIM_ALL 8008
#define LYNQ_REQUEST_CHANGE_SCREEN_STATE 8014 /*add for two sim suspend on 20220919*/
+#define LYNQ_REQUEST_CHANGE_RADIO 8015
#define MAX_LEN 1024*8
#define MAX_NUM 10
#define LOG_TAG "LYNQ_SIM"
@@ -1025,6 +1026,85 @@
}
+/**@breif change screen state
+*param num type: [IN] screen_state,0:close,1:open
+*param ret type: [OUT] result,0:success,other:fail
+*return int
+*/
+int lynq_factory_radio_state(int num){
+ if(g_lynq_sim_init_flag == 0)
+ {
+ return -1;
+ }
+
+ int ret = -1;
+ if(!judge(num))
+ return ret;
+ int send_num = 0;
+ int recv_num = 0;
+ int error[2];
+ char res_data[MAX_LEN] = {0};
+ //change the first screen
+ client_t.request = LYNQ_REQUEST_CHANGE_RADIO; //8015
+ client_t.paramLen = 1;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%d\n", num);
+
+ pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
+ send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+ if(send_num < 0)
+ {
+ RLOGD("sendto error:\n");
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ return send_num;
+ }
+ for(int i=0;i<2;i++)
+ {
+ recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+ if(recv_num < 0 || recv_num == 0)
+ {
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);//recvfrom fail
+ RLOGD("screen recvform error\n");
+ return errno;
+ }
+ if(i == 1)
+ {
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ RLOGD("recvfrom success\n");
+ }
+ Parcel p;
+ p.setData((uint8_t *)res_data,sizeof(char)*recv_num);
+ p.setDataPosition(0);
+ if(p.dataAvail() > 0)
+ {
+ p.readInt32(&resp_type);
+ p.readInt32(&solicited_token);
+ p.readInt32(&request);
+ p.readInt32(&slot_id);
+ p.readInt32(&error1);
+ error[i] = error1;//change screen state result
+ }
+ }
+
+ if((error[0] != 0) || (error[1] != 0))
+ {
+ RLOGD("error[0] = %d errpr[1] = %d\n",error[0], error[1]);
+ if(error[0] != 0)
+ {
+ return error[0];
+ }
+ else
+ {
+ return error[1];
+ }
+ }
+ else
+ {
+ return 0;
+ }
+
+}
+
/**
* @brief Check whether the input is valid for lynq_req_sim_io api
* @param list type: [IN] list[0]:one of the commands listed for TS 27.007 +CRSM.(command)