[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)