[Feature][T8TSK-88][System]Develop API and AT to restart modem
Change-Id: I90659afd935827bf25940b2ac460f5a51cdee9fa
diff --git a/lib/liblynq-sim/src/lynq_sim.cpp b/lib/liblynq-sim/src/lynq_sim.cpp
index 0d36320..65ea97f 100755
--- a/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/lib/liblynq-sim/src/lynq_sim.cpp
@@ -21,6 +21,8 @@
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h> /*add for get recvfrom errorid on 20220921*/
+#include <sys/stat.h>
+#include <fcntl.h>
#define MAX_BUF 20
#define MAX_NUM 80
#define RIL_REQUEST_GET_SIM_STATUS 1
@@ -161,7 +163,8 @@
send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
if(send_num < 0)
{
- RLOGD("sendto error:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -169,6 +172,7 @@
if(recv_num < 0 || recv_num == 0)
{
RLOGD("recvfrom step2 fail:");
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return recv_num;
}
pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
@@ -210,7 +214,8 @@
send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
if(send_num < 0)
{
- RLOGD("sendto error:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -263,7 +268,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -314,7 +320,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
@@ -361,7 +368,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return ret;
}
//get data msg
@@ -413,7 +421,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -458,7 +467,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -513,7 +523,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -562,7 +573,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -607,7 +619,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -714,7 +727,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return ret;
}
//get data msg
@@ -789,7 +803,8 @@
send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
if(send_num < 0)
{
- RLOGD("sendto error:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
//get data msg
@@ -849,7 +864,7 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
return send_num;
}
pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
@@ -885,6 +900,7 @@
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++)
@@ -1019,7 +1035,8 @@
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:");
+ RLOGD("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return send_num;
}
recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
@@ -1052,6 +1069,48 @@
return error1;
}
+static void wait_reset_mipc_response(int *response)
+{
+ int outfd = open("/data/tp",O_RDONLY);
+ if(outfd == -1){
+ RLOGD("open error");
+ return;
+ }
+ char rst[1024];
+ int s;
+ s = read(outfd,rst,sizeof(rst));
+ sscanf(rst,"%d",response);
+ usleep(1);
+ close(outfd);
+ return;
+}
+
+int lynq_reset_modem(void)
+{
+ if(g_lynq_sim_init_flag == 0)
+ {
+ return -1;
+ }
+ int ret = -1;
+ int send_num = 0;
+ client_t.request = RIL_REQUEST_OEM_HOOK_RAW;
+ client_t.paramLen = 1;
+ client_t.uToken = Global_uToken;
+ sprintf(client_t.param, "%s\n", "AT+LRSTMD");
+ 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("function %s sendto error:", __FUNCTION__);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ return ret;
+ }
+ wait_reset_mipc_response(&ret);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ RLOGD("function %d ret %d",__FUNCTION__, ret);
+ return ret;
+}
+
/**
* @brief handle shutdown buf
* @param options type: [IN]My Param doc