[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:");