[feature][T800-171][SIM]Failed to send send at the same time

Change-Id: I76befdebb4a62fe080aa77c0a4e204094b4ea5a7
diff --git a/lib/liblynq-sim/src/lynq_sim.cpp b/lib/liblynq-sim/src/lynq_sim.cpp
index 100a89d..b9f12ea 100755
--- a/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/lib/liblynq-sim/src/lynq_sim.cpp
@@ -60,6 +60,7 @@
 int request = -1;
 int slot_id = -1;
 int error1 = -1;
+static pthread_mutex_t g_lynq_sim_sendto_mutex;
 /**
  * @brief mark call initialization state
  * 0: deinit state
@@ -96,7 +97,7 @@
         return sock_fd;
     }
     struct timeval timeOut;
-    timeOut.tv_sec = 5;
+    timeOut.tv_sec = 60;
     timeOut.tv_usec = 0;
     if (setsockopt(sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0) 
     {
@@ -149,6 +150,7 @@
     char res_data[MAX_LEN] = {0};
     int len1 = sizeof(client_t1.param);
     memset(client_t1.param, 0, sizeof(char)*MAX_LEN);
+    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
     send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
     if(send_num < 0)  
     {  
@@ -162,6 +164,7 @@
         RLOGD("recvfrom step2 fail:");
         return recv_num;
     }
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     Parcel p;;
     p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
     p.setDataPosition(0);
@@ -191,6 +194,7 @@
     client_t1.uToken = Global_uToken;
     char res_data[MAX_LEN] = {0};
     memset(client_t1.param, 0, sizeof(client_t1.param));
+    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
     send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
     if(send_num < 0)  
     {  
@@ -199,6 +203,7 @@
     }
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -236,6 +241,7 @@
     client_t.uToken = Global_uToken;
     char res_data[MAX_LEN] = {0};
     memset(client_t.param, 0, sizeof(client_t.param));
+    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)  
     {  
@@ -244,6 +250,7 @@
     }
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -279,6 +286,7 @@
     client_t.paramLen = 4;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%s %s %s %s\n", "SC", pin, "11", "1");
+    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)  
     {  
@@ -288,6 +296,7 @@
 
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -317,6 +326,7 @@
     client_t.paramLen = 4;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%s %s %s %s\n", "SC", pin, "11", "0");
+    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)  
     {  
@@ -325,6 +335,7 @@
     }
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -355,6 +366,7 @@
     client_t.uToken = Global_uToken;
     char res_data[MAX_LEN] = {0};
     sprintf(client_t.param, "%s %s %s\n", "SC", pin, "11");
+    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)  
     {  
@@ -363,6 +375,7 @@
     }
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -403,6 +416,7 @@
     client_t.paramLen = 1;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%s\n", pin);
+    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)  
     {  
@@ -411,6 +425,7 @@
     }
    //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -445,6 +460,7 @@
     client_t.paramLen = 2;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%s %s\n", old_pin, new_pin);
+    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)  
     {  
@@ -453,6 +469,7 @@
     }
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -483,6 +500,7 @@
     client_t.paramLen = 2;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%s %s\n", puk, pin);
+    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)  
     {  
@@ -491,6 +509,7 @@
     }
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -579,6 +598,7 @@
     client_t.paramLen = 1;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%s\n", "AT+CNUM");
+    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)  
     {  
@@ -587,6 +607,7 @@
     }
      //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -647,6 +668,7 @@
     client_t1.uToken = Global_uToken;
     char res_data[MAX_LEN] = {0};
     memset(client_t1.param, 0, sizeof(client_t1.param));
+    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
     send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
     if(send_num < 0)  
     {  
@@ -655,6 +677,7 @@
     }
     //get data msg
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");
@@ -699,12 +722,14 @@
     client_t.paramLen = 1;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%d\n", slot);
+    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:");  
         return send_num;
     }
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     return 0;
 }
 
@@ -717,12 +742,14 @@
     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:");
         return send_num;
     }
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     return 0;
 }
 
@@ -803,6 +830,7 @@
     client_t.paramLen = 9;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%d %d %s %d %d %d %s %s %s\n", list[0], list[1], path, list[2], list[3], list[4], data_buf, pin2_buf, aidPtr_buf);
+    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)
     {
@@ -810,6 +838,7 @@
         return send_num;
     }
     recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
     if(recv_num < 0 || recv_num == 0)
     {
         RLOGD("recvfrom step2 fail:");