[feature][T8TSK-4] Optimize the network module, provide state buffer variables 2, short the waiting time
Change-Id: Iea4a60a48352bd8502d1c9b259df10d378fa08dd
diff --git a/lib/liblynq-network/lynq_network.cpp b/lib/liblynq-network/lynq_network.cpp
index fa3090b..8e84df1 100755
--- a/lib/liblynq-network/lynq_network.cpp
+++ b/lib/liblynq-network/lynq_network.cpp
@@ -8,6 +8,7 @@
#include <log/log.h>
#include <cutils/jstring.h>
#include <pthread.h>
+#include <list>
#include <vendor-ril/telephony/ril.h>
#include <vendor-ril/telephony/mtk_ril_sp.h>
@@ -37,6 +38,7 @@
typedef struct{
int resp_type;
+ int token;
int request;
int slot_id;
int error;
@@ -72,6 +74,21 @@
*/
static pthread_mutex_t g_lynq_network_sendto_mutex;
+
+/*hq add for set waiting time 2022/09/13 begin*/
+int network_rc_status = 1;
+static pthread_mutex_t s_RecvMsgBlockMutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t s_WaitRecvMsgCond = PTHREAD_COND_INITIALIZER;
+#define BLOCK_RC_MSG_LOCK() pthread_mutex_lock(&s_RecvMsgBlockMutex)
+#define BLOCK_RC_MSG_UNLOCK() pthread_mutex_unlock(&s_RecvMsgBlockMutex)
+#define BLOCK_WAIT_RECV_MSG_TIME_OUT(a) pthread_cond_timedwait(&s_WaitRecvMsgCond, &s_RecvMsgBlockMutex,(a))
+#define BLOCK_WAKEUP_RECV_MSG() pthread_cond_broadcast(&s_WaitRecvMsgCond)
+std::list<Parcel*> g_recv_parcel_list;
+const int waitResponse(int token,int time_out);
+int g_inner_test=0;
+/*hq add for set waiting time 2022/09/13 end*/
+
+
//static pthread_mutex_t g_lynq_network_recv_mutex;
typedef enum{
@@ -138,15 +155,66 @@
}
return 0;
}
-int JumpHeader(Parcel &p,int *resp_type,int *request,int *slot_id,int *error)
+
+const int waitResponse(Parcel*& p, int token,int time_out)
+{
+ int waitToken = token;
+ int wakeup_token=-1;
+ int resp_type;
+ struct timeval now;
+ struct timespec timeout;
+ int ret;
+ std::list<Parcel*>::iterator iter;
+ int cnt=0;
+
+ gettimeofday(&now,NULL);
+ timeout.tv_sec = now.tv_sec+time_out; //timeout is 1min
+ timeout.tv_nsec = now.tv_usec*1000;
+
+ LYINFLOG("%s wait token is %d",__func__,waitToken);
+
+ BLOCK_RC_MSG_LOCK();
+ while(true) {
+ cnt++;
+ for(iter=g_recv_parcel_list.begin();iter!=g_recv_parcel_list.end();++iter)
+ {
+ (*iter)->setDataPosition(0);
+ (*iter)->readInt32(&resp_type);
+ (*iter)->readInt32(&wakeup_token);
+ if(wakeup_token==waitToken)
+ {
+ LYINFLOG("%s get waitToken",__func__);
+ p=(*iter);
+ p->setDataPosition(0);
+ g_recv_parcel_list.erase(iter);
+ goto waitResponse_end;
+ }
+ }
+ LYINFLOG("%s no wait Token in msg list, list size is %d",__func__,g_recv_parcel_list.size());
+ ret=BLOCK_WAIT_RECV_MSG_TIME_OUT(&timeout);
+ if(ret!=0)
+ {
+ LYERRLOG("%s no expected token after %d second",__func__,time_out);
+ break;
+ }
+ }
+waitResponse_end:
+ LYINFLOG("%s wait token is %d wakeup_token is %d, cnt is %d",__func__,waitToken,wakeup_token,cnt);
+ BLOCK_RC_MSG_UNLOCK();
+ return !(wakeup_token==waitToken);
+}
+
+int JumpHeader(Parcel &p,int *resp_type,int* token,int *request,int *slot_id,int *error)
{
LYINFLOG("jump header");
if(p.dataAvail() > 0)
{
p.readInt32(resp_type);
+ p.readInt32(token);
p.readInt32(request);
p.readInt32(slot_id);
p.readInt32(error);
+ LYINFLOG("resp_type=%d,token=%d,request=%d,slot_id=%d,error_code=%d",*resp_type,*token,*request,*slot_id,*error);
return 0;
}
else
@@ -155,16 +223,38 @@
}
}
-int lynq_get_common_request(int request_id, int time_out, Parcel &p, int argc, const char* format,...)
+void PrintHeader(lynq_resp_t& head)
+{
+ LYINFLOG("resp_type=%d,token=%d,request=%d,slot_id=%d,error_code=%d",head.resp_type,head.token,head.request,head.slot_id,head.error);
+}
+
+int GetHeader(Parcel* &p, lynq_resp_t& head)
+{
+ LYINFLOG("get header");
+ if(p->dataAvail() > 0)
+ {
+ p->readInt32(&(head.resp_type));
+ p->readInt32(&(head.token));
+ p->readInt32(&(head.request));
+ p->readInt32(&(head.slot_id));
+ p->readInt32(&(head.error));
+ PrintHeader(head);
+ return 0;
+ }
+ else
+ {
+ return -1;
+ }
+}
+
+int lynq_get_common_request(int request_id, int time_out, Parcel*& p, int argc, const char* format,...)
{
lynq_client_t client;
- int resp_type = -1;
- int request = -1;
- int slot_id = -1;
int ret;
int send_num;
client.uToken = network_Global_uToken;
+ network_Global_uToken=(network_Global_uToken+1)%10000;/*0-10000*/
client.request = request_id;
client.paramLen = argc;
bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
@@ -177,16 +267,24 @@
}
LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client,sizeof(client),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
+ if(g_inner_test==0)
+ {
+ send_num = sendto(network_sock_fd,&client,sizeof(client),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
+ }
+ else
+ {
+ send_num = 1;
+ g_inner_test = 0;
+ }
+ pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if(send_num <= 0)
-
+ if(send_num <= 0)
{
LYERRLOG("send request fail, send num is %d", send_num);
return -1;
}
- ret = get_response(p, time_out);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
+ ret = waitResponse(p, client.uToken,time_out);
+
return ret;
}
@@ -208,6 +306,79 @@
return;
}
+void *thread_rc_recv(void *p)
+{
+ Parcel* rc_p;
+ std::list<Parcel*>::iterator iter;
+ int resp_type = -1;
+ char rc_data[LYNQ_REC_BUF];
+ int rc_len;
+ int null_cnt=0;
+ int wakeup_token;
+
+ LYINFLOG("rc thread is running");
+ while(network_rc_status)
+ {
+ bzero(rc_data,LYNQ_REC_BUF);
+ while(true)
+ {
+ rc_len = recvfrom(network_sock_fd,rc_data,sizeof(rc_data),0,(struct sockaddr *)&network_addr_serv,(socklen_t *)&network_len_addr_serv);
+ if(rc_len<sizeof(int32_t)*2)
+ {
+ LYERRLOG("%s recv len %d less %d",__func__, rc_len,sizeof(int)*2);
+ continue;
+ }
+ rc_p= new Parcel;
+ if(rc_p==NULL)
+ {
+ null_cnt++;
+ LYERRLOG("%s rc_p is NULL, cnt is %d",__func__, null_cnt);
+ if(null_cnt>20)
+ {
+ goto rc_recv_end;
+ }
+ continue;
+ }
+ else
+ {
+ null_cnt=0;
+ }
+
+ rc_p->setData((uint8_t *)rc_data,rc_len); // p.setData((uint8_t *) buffer, buflen);
+ rc_p->setDataPosition(0);
+ if(rc_p->dataAvail()>0)
+ {
+ rc_p->readInt32(&resp_type);
+ rc_p->readInt32(&wakeup_token);
+ BLOCK_RC_MSG_LOCK();
+ g_recv_parcel_list.push_back(rc_p);
+ LYINFLOG("%s wakeup token is %d, list size is %d!",__func__,wakeup_token,g_recv_parcel_list.size());
+ if(g_recv_parcel_list.size()>20) //max 20
+ {
+ iter=g_recv_parcel_list.begin();
+ (*iter)->setDataPosition(0);
+ (*iter)->readInt32(&resp_type);
+ (*iter)->readInt32(&wakeup_token);
+ delete (*(g_recv_parcel_list.begin()));
+ LYERRLOG("%s wakeup token %d is deleted!",__func__,wakeup_token);
+ g_recv_parcel_list.erase(iter);
+ }
+ BLOCK_WAKEUP_RECV_MSG();
+ BLOCK_RC_MSG_UNLOCK();
+ break;
+ }
+ else
+ {
+ LYERRLOG("%s rc_p data Avail %d not greater than 0",__func__, rc_p->dataAvail());
+ delete rc_p;
+ }
+ }
+ }
+
+rc_recv_end:
+ return NULL;
+}
+
void *thread_urc_recv(void *p)
{
Parcel *urc_p =NULL;
@@ -354,17 +525,16 @@
return NULL;
}
-
int lynq_server_socket_start()
{
- struct timeval timeOut;
+// struct timeval timeOut;
network_sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
if(-1 == network_sock_fd)
{
LYERRLOG("socket open error");
return -1;
}
-
+# if 0
timeOut.tv_sec = 5;
timeOut.tv_usec = 0;
if (setsockopt(network_sock_fd, SOL_SOCKET, SO_RCVTIMEO, &timeOut, sizeof(timeOut)) < 0)
@@ -372,6 +542,8 @@
LYERRLOG("time out setting failed\n");
return -1;
}
+#endif
+
LYINFLOG("network_sock_fd = %d",network_sock_fd);
memset(&network_addr_serv, 0, sizeof(network_addr_serv));
@@ -380,6 +552,28 @@
network_addr_serv.sin_port = htons(LYNQ_SERVICE_PORT);
network_len_addr_serv = sizeof(network_addr_serv);
+ BLOCK_RC_MSG_LOCK();
+ std::list<Parcel*>::iterator iter;
+ for(iter=g_recv_parcel_list.begin();iter!=g_recv_parcel_list.end();++iter)
+ {
+ delete (*iter);
+ }
+ g_recv_parcel_list.clear();
+ BLOCK_RC_MSG_UNLOCK();
+
+ pthread_t tid;
+ pthread_attr_t attr;
+ int ret;
+
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+ ret = pthread_create(&tid,&attr,thread_rc_recv,NULL);
+ if(ret <0)
+ {
+ LYERRLOG("rc pthread create error");
+ return -1;
+ }
+ LYINFLOG("rc start success");
return 0;
}
@@ -422,6 +616,7 @@
return -1;
}
LYINFLOG("urc start success");
+
return 0;
}
@@ -437,6 +632,7 @@
return -1;
}
network_urc_status = 1;
+ network_rc_status = 1;
network_Global_uToken = utoken;
LYLOGSET(LOG_INFO);
LYLOGEINIT(USER_LOG_TAG);
@@ -456,7 +652,9 @@
LYERRLOG("init socket urc fail!!!");
return -1;
}
- pthread_mutex_init(&g_lynq_network_sendto_mutex, NULL);
+ pthread_mutex_init(&g_lynq_network_sendto_mutex, NULL);
+ pthread_mutex_init(&s_RecvMsgBlockMutex, NULL);
+
return 0;
}
@@ -478,7 +676,7 @@
return 0;
}
-int copyCellInfoList(Parcel &p,uint64_t *cellinfo,int *tac,int *earfcn)
+int copyCellInfoList(Parcel* &p,uint64_t *cellinfo,int *tac,int *earfcn)
{
int32_t v=0;
int64_t v6=0;
@@ -489,99 +687,99 @@
int nothing = 0;
int tmp_uint64 = 0;
- p.readInt32(&v);
+ p->readInt32(&v);
RIL_CellInfoType cellinfoType = RIL_CellInfoType(v);
- p.readInt32(¬hing);
+ p->readInt32(¬hing);
// cellinfo->cellinfo.cellInfoType = RIL_CellInfoType(v);
- // p.readInt32(&cellinfo->cellinfo.registered);
- p.readInt32(&v);
+ // p->readInt32(&cellinfo->cellinfo.registered);
+ p->readInt32(&v);
// cellinfo->cellinfo.timeStampType = RIL_TimeStampType(v);
- p.readInt64(&v6);
+ p->readInt64(&v6);
// cellinfo->cellinfo.timeStamp = v6;
switch(cellinfoType) {
case RIL_CELL_INFO_TYPE_GSM: {
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(&tmp_uint64);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(&tmp_uint64);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
*cellinfo = (uint64_t)tmp_uint64;
tac = ¬hing;
earfcn = ¬hing;
break;
}
case RIL_CELL_INFO_TYPE_WCDMA: {
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(&tmp_uint64);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(&tmp_uint64);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
*cellinfo = (uint64_t)tmp_uint64;
tac = ¬hing;
earfcn = ¬hing;
break;
}
case RIL_CELL_INFO_TYPE_CDMA: {
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
cellinfo = 0;
tac = ¬hing;
earfcn = ¬hing;
break;
}
case RIL_CELL_INFO_TYPE_LTE: {
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(&tmp_uint64);
- p.readInt32(¬hing);
- p.readInt32(tac);
- p.readInt32(earfcn);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(&tmp_uint64);
+ p->readInt32(¬hing);
+ p->readInt32(tac);
+ p->readInt32(earfcn);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
*cellinfo = (uint64_t)tmp_uint64;
break;
}
case RIL_CELL_INFO_TYPE_TD_SCDMA: {
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(&tmp_uint64);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(&tmp_uint64);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
*cellinfo = (uint64_t)tmp_uint64;
tac = ¬hing;
earfcn = ¬hing;
break;
}
case RIL_CELL_INFO_TYPE_NR: {
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readUint64(cellinfo);
- p.readInt32(¬hing);
- p.readInt32(tac);
- p.readInt32(earfcn);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
- p.readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readUint64(cellinfo);
+ p->readInt32(¬hing);
+ p->readInt32(tac);
+ p->readInt32(earfcn);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
+ p->readInt32(¬hing);
break;
}
}
@@ -603,17 +801,27 @@
}
g_lynq_network_init_flag = 0;
network_urc_status = 0;
+ network_rc_status = 0;
deinit_network_timer_all();
-
+
+ BLOCK_RC_MSG_LOCK();
+ std::list<Parcel*>::iterator iter;
+ for(iter=g_recv_parcel_list.begin();iter!=g_recv_parcel_list.end();++iter)
+ {
+ delete (*iter);
+ }
+ g_recv_parcel_list.clear();
+ BLOCK_RC_MSG_UNLOCK();
+
return 0;
}
-static char * lynqStrdupReadString(Parcel &p) {
+static char * lynqStrdupReadString(Parcel* &p) {
size_t stringlen;
const char16_t *s16;
- s16 = p.readString16Inplace(&stringlen);
+ s16 = p->readString16Inplace(&stringlen);
return strndup16to8(s16, stringlen);
}
@@ -621,47 +829,39 @@
{
int ret = -1;
if(NULL == OperatorFN||NULL == OperatorSH|| NULL == MccMnc)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- int num = 0;
- lynq_client_t client_t;
- char *resp[LYNQ_RESP_BUF];
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_OPERATOR;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
-
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
- return ret;
- }
-
- //get data
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ LYERRLOG("%s some parameter OperatorFN OperatorSH MccMnc %s %s %s is NULL",__func__,OperatorFN,OperatorSH,MccMnc);
+ return ret;
+ }
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_OPERATOR,30,p,0,"");
+ if(ret==0)
{
- return ret;
- }
-
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
- p.readInt32(&num);
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int num ;
+ char *resp[LYNQ_RESP_BUF];
+
+ p->readInt32(&num);
if(num == 0)
{
LYERRLOG("no paramters");
@@ -683,167 +883,166 @@
strcpy(MccMnc,resp[2]);
}
}
+
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return 0;
}
- return response.error;
+
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_query_network_selection_mode(int *netselMode)
{
int ret = -1;
if(NULL == netselMode)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- int readnum = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
-
- memset(client_t.param,0,sizeof(client_t.param));
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
- return -1;
- }
-
- //get data
- Parcel p;
- ret = get_response(p,600);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ LYERRLOG("%s parameter is NULL",__func__);
+ return ret;
+ }
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE,30,p,0,"");
+ if(ret==0)
{
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
- p.readInt32(&readnum);
- p.readInt32(netselMode);
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int readnum;
+ p->readInt32(&readnum);
+ p->readInt32(netselMode);
+
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return 0;
}
- return response.error;
+ return ret;
}
int lynq_set_network_selection_mode(const char *mode,const char* mccmnc)
{
- int ret = -1;
- if(NULL == mode)
- return ret;
- if(strlen(mode) == 0)
+ int ret = -1;
+ if(NULL == mode || (strlen(mode) == 0))
{
- return ret;
+ LYERRLOG("%s parameter mod %s is error",__func__,mode);
+ return -1;
}
- int send_num = 0;
- lynq_client_t client_t;
- int recv_num = 0;
- memset(&client_t,0,sizeof(client_t));
+
+ if(!strcmp(mode,"Manual"))
+ {
+ if(mccmnc == NULL || strlen(mccmnc) == 0)
+ {
+ LYERRLOG("%s parameter mccmnc %s is error",__func__,mccmnc);
+ return -1;
+ }
+ }
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
if(!strcmp(mode,"Auto"))
{
- client_t.request = RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
- }else if(!strcmp(mode,"Manual")){
- if(mccmnc == NULL)
+ ret=lynq_get_common_request(RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC,30,p,0,"");
+ }
+ else if(!strcmp(mode,"Manual"))
+ {
+ ret=lynq_get_common_request(RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL,30,p,1,"%s",mccmnc);
+ }
+ else
+ {
+ LYERRLOG("%s parameter mode %s is NULL",__func__,mode);
+ return -1;
+ }
+
+
+ if(ret==0)
+ {
+ if(p==NULL)
{
- LYERRLOG("mccmnc is NULL!!!");
- return ret;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
- if(strlen(mccmnc) == 0)
+ ret=GetHeader(p,head);
+ if(ret!=0)
{
- LYERRLOG("mccmnc strlen is 0!!!");
- return ret;
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
}
- client_t.request = RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL;
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
- sprintf(client_t.param,"%s",mccmnc);
- }else{
- LYERRLOG("request error");
- return ret;
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ LYINFLOG("%s set mode %s mccmnc %s suc",__func__,mode,mccmnc);
+ delete p;
+ return 0;
}
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
- {
- LYERRLOG("sendto error:");
- return ret;
- }
-
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
- {
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- }
- return response.error;
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_query_available_network(char *OperatorFN,char *OperatorSH,char *MccMnc,char * NetStatus)
{
int ret = -1;
if(NULL == OperatorFN||NULL == OperatorSH||NULL == MccMnc||NULL == NetStatus)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- char *resp[128];
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_QUERY_AVAILABLE_NETWORKS;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
+ LYERRLOG("%s there is parameter is NULL",__func__);
return ret;
- }
+ }
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
- //get data
- Parcel p;
- ret = get_response(p,600);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ ret=lynq_get_common_request(RIL_REQUEST_QUERY_AVAILABLE_NETWORKS,600,p,0,"");
+ if(ret==0)
{
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
- int num =p.readInt32();
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int num =p->readInt32();
+ char *resp[128];
if(num == 0)
{
- LYERRLOG("no paramters");
+ LYERRLOG("%s get num is 0",__func__);
+ delete p;
+ return -1;
}else{
for(int i = 0; i<num;i++)
{
@@ -866,26 +1065,34 @@
strcpy(NetStatus,resp[2]);
}
}
+ delete p;
+ LYINFLOG("%s suc",__func__);
+ return 0;
}
- return response.error;
+
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_query_registration_state(const char *type,int* regState,int* imsRegState,char * LAC,char * CID,int *netType,int *radioTechFam,int *netRejected)
{
int ret = -1;
if(NULL == type || NULL ==regState ||NULL ==imsRegState ||NULL ==LAC ||NULL ==CID ||NULL ==netType ||NULL ==radioTechFam || NULL == netRejected)
+ {
+ LYERRLOG("%s there is parameter is NULL",__func__);
return ret;
- int send_num = 0;
- int recv_num = 0;
- int num = 0;
- char str[LYNQ_TYPE_BUF];
- char *resp[LYNQ_RESP_BUF];
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
+ }
if(strlen(type)>LYNQ_TYPE_BUF)
{
LYERRLOG("[%s]the parameter is inavaliable !",__FUNCTION__);
+ return ret;
}
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ int request;
+ char str[LYNQ_TYPE_BUF];
memcpy(str,type,strlen(type)+1);
strUpper(str);
if(!strcmp(str,"VOICE"))
@@ -894,57 +1101,49 @@
{
return 0;
}
- client_t.request = RIL_REQUEST_VOICE_REGISTRATION_STATE;
+ request = RIL_REQUEST_VOICE_REGISTRATION_STATE;
}else if(!strcmp(str,"DATA")){
if(lynq_get_registration_state_to_buf_data(regState,LAC,CID,netType)==0)
{
return 0;
}
- client_t.request = RIL_REQUEST_DATA_REGISTRATION_STATE;
+ request = RIL_REQUEST_DATA_REGISTRATION_STATE;
}else if(!strcmp(str,"IMS")){
if(lynq_get_registration_state_to_buf_ims(imsRegState,radioTechFam)==0)
{
return 0;
}
- client_t.request = RIL_REQUEST_IMS_REGISTRATION_STATE;
+ request = RIL_REQUEST_IMS_REGISTRATION_STATE;
}else{
LYERRLOG("request error");
return ret;
- }
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
+ }
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
+ ret=lynq_get_common_request(request,30,p,0,"");
+ if(ret==0)
{
- LYERRLOG("sendto error:");
- return ret;
- }
-
- //get data
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
- {
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ int num;
if(!strcmp(str,"VOICE"))
{
- p.readInt32(&num);
+ p->readInt32(&num);
if(num == 15)
{
*regState = atoi(lynqStrdupReadString(p));
@@ -964,10 +1163,18 @@
*netRejected = atoi(lynqStrdupReadString(p));
lynq_set_registration_state_to_buf_voice(*regState,*netType,*netRejected);
}
- }else if(!strcmp(str,"DATA")){
- p.readInt32(&num);
+ else
+ {
+ LYERRLOG("%s type %s num %d error",__func__,str,num);
+ delete p;
+ return -1;
+ }
+ }
+ else if(!strcmp(str,"DATA")){
+ p->readInt32(&num);
if(num == 11)
{
+ char *resp[LYNQ_RESP_BUF];
*regState = atoi(lynqStrdupReadString(p));
resp[0] = lynqStrdupReadString(p);
strcpy(LAC,resp[0]);
@@ -977,111 +1184,124 @@
*netType = atoi(lynqStrdupReadString(p));
lynq_set_registration_state_to_buf_data(*regState,LAC,CID,*netType);
}
+ else
+ {
+ LYERRLOG("%s type %s num %d error",__func__,str,num);
+ delete p;
+ return -1;
+ }
- }else if(!strcmp(str,"IMS")){
- p.readInt32(&num);
+ }
+ else // "IMS"
+ {
+ p->readInt32(&num);
if(num == 2)
{
- p.readInt32(imsRegState);
- p.readInt32(radioTechFam);
+ p->readInt32(imsRegState);
+ p->readInt32(radioTechFam);
lynq_set_registration_state_to_buf_ims(*imsRegState,*radioTechFam);
}
- }else{
- LYERRLOG("request error");
- return ret;
+ else
+ {
+ LYERRLOG("%s type %s num %d error",__func__,str,num);
+ delete p;
+ return -1;
+ }
}
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return 0;
}
- return response.error;
+
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_query_prefferred_networktype(int *preNetType)
-{
+{
int ret = -1;
- int send_num = 0;
- int recv_num = 0;
- int num = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
+ if(NULL == preNetType)
{
- LYERRLOG("sendto error:");
+ LYERRLOG("%s there is parameter is NULL",__func__);
return ret;
+ }
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE,30,p,0,"");
+ if(ret==0)
+ {
+ if(p==NULL)
+ {
+ LYERRLOG("%s get p error",__func__);
+ return -1;
+ }
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ int num;
+ p->readInt32(&num);
+ p->readInt32(preNetType);
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return 0;
}
- //get data
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
- {
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
- {
- LYERRLOG("response return error");
- return response.error;
- }
- p.readInt32(&num);
- p.readInt32(preNetType);
- }
- return response.error;
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_set_prefferred_networktype(const int preffertype)
{
int ret = -1;
if(preffertype < 0||preffertype >33)
- return ret;
- int send_num = 0;
- lynq_client_t client_t;
- int recv_num = 0;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE;
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
- sprintf(client_t.param,"%d",preffertype);
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
+ LYERRLOG("%s parameter %d error",__func__,preffertype);
return ret;
- }
-
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ }
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE,30,p,1,"%d",preffertype);
+ if(ret==0)
{
- return ret;
- }
-
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ LYINFLOG("%s set %d suc",__func__,preffertype);
+ delete p;
+ return 0;
}
- return response.error;
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
@@ -1089,246 +1309,230 @@
{
int ret = -1;
if(NULL == realNum)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- int num = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_GET_CELL_INFO_LIST;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
+ LYERRLOG("%s there is parameter is NULL",__func__);
return ret;
- }
-
- //get data
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ }
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_GET_CELL_INFO_LIST,30,p,0,"");
+ if(ret==0)
{
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
- p.readInt32(&num);
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int num;
+
+ p->readInt32(&num);
LYINFLOG("cell info num:%d",num);
*realNum = num;
for(int i = 0;i<num;i++)
{
copyCellInfoList(p,&cellinfo[i],&tac[i],&earfcn[i]);
}
+
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return 0;
}
- return response.error;
+
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_set_unsol_cell_info_listrate(const int rate)
{
- int ret = -1;
- int send_num = 0;
- int recv_num = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE;
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
- sprintf(client_t.param,"%d",rate);
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
+ int ret = -1;
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE,30,p,1,"%d",rate);
+ if(ret==0)
{
- LYERRLOG("sendto error:");
- return ret;
- }
-
-
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
- {
- return ret;
- }
-
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ LYINFLOG("%s set %d suc",__func__,rate);
+ delete p;
+ return 0;
}
- return response.error;
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_set_band_mode(const int bandmode)
{
- int ret = -1;
- int send_num = 0;
- int recv_num = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_SET_BAND_MODE;
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
- sprintf(client_t.param,"%d",bandmode);
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
+ int ret = -1;
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_SET_BAND_MODE,30,p,1,"%d",bandmode);
+ if(ret==0)
{
- LYERRLOG("sendto error:");
- return ret;
- }
-
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
- {
- return ret;
- }
-
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ LYINFLOG("%s set %d suc",__func__,bandmode);
+ delete p;
+ return 0;
}
- return response.error;
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
int lynq_query_available_bandmode(int availBanMode[])
{
- int ret = -1;
+ int ret=-1;
+
if(NULL == availBanMode)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- int num = 0;
- int res = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
+ LYERRLOG("%s parameter is NULL",__func__);
return ret;
}
- //get data
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE,30,p,0,"");
+ if(ret==0)
{
- return ret;
- }
- for(int i = 0;i<10;i++)
- {
- availBanMode[i]=0;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
- p.readInt32(&num);
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int num = 0;
+ int res = 0;
+ int i;
+
+ p->readInt32(&num);
LYINFLOG("num = %d",num);
availBanMode[0] = num;
- for(int i=1 ;i<=num;i++)
+ for(i=1 ;i<=num;i++)
{
- p.readInt32(&res);
+ p->readInt32(&res);
availBanMode[i]=res;
}
+
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return -1;
}
- return response.error;
+ LYERRLOG("%s send request error %d",__func__,ret);
+
+ return ret;
+
}
int lynq_radio_on(const int data)
-{
+{
int ret = -1;
- if(data < 0)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_RADIO_POWER;
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
- sprintf(client_t.param,"%d",data);
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
+ if (data < 0 || data > 1)
{
- LYERRLOG("sendto error:");
+ LYERRLOG("%s parameter %d error",__func__,data);
return ret;
- }
-
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ }
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_RADIO_POWER,30,p,1,"%d",data);
+ if(ret==0)
{
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ LYINFLOG("%s set %d suc",__func__,data);
+ delete p;
+ return 0;
}
- return response.error;
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
-const char * lynq_get_raw_data(Parcel &p, int* data_len)
+const char * lynq_get_raw_data(Parcel* &p, int* data_len)
{
int32_t len;
int status;
@@ -1336,7 +1540,7 @@
*data_len=0;
- status = p.readInt32(&len);
+ status = p->readInt32(&len);
if (status != 0) {
LYERRLOG("%s status is %d",__func__,status);
@@ -1351,7 +1555,7 @@
}
LYINFLOG("%s len is %d",__func__,len);
- data = (char*) p.readInplace(len);
+ data = (char*) p->readInplace(len);
*data_len=len;
return data;
@@ -1359,83 +1563,95 @@
int lynq_query_radio_state(int *radio_state)
{
- int ret;
- Parcel p;
- int resp_type = -1;
- int request = -1;
- int slot_id = -1;
- int error = -1;
- int bfind=false;
- const char* data;
- int data_len;
- char* data_str;
- char* start;
- int length;
- int i;
- int num_start;
-
+ int ret=-1;
+
if(NULL == radio_state)
{
LYERRLOG("%s radio state is NULL",__func__);
- return -1;
+ return ret;
}
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
ret=lynq_get_common_request(RIL_REQUEST_OEM_HOOK_RAW,5,p,1,"%s","AT+CFUN");
if(ret==0)
{
- JumpHeader(p,&resp_type,&request,&slot_id,&error);
- if(error==0)
+ if(p==NULL)
{
- data = lynq_get_raw_data(p,&data_len);
- if(data==NULL || data_len == 0)
- {
- LYERRLOG("%s lynq_get_raw_data NULL or data_len is 0",__func__);
- return -1;
- }
- data_str = (char*) calloc(1,data_len+1);
- if (NULL == data_str)
- {
- LYERRLOG("%s alloc mem error, data_len is %d",__func__,data_len+1);
- return -1;
- }
- memmove(data_str, data, data_len);
- data_str[data_len]='\0';
- LYINFLOG("%s return string is %s",__func__,data_str);
- start = strstr(data_str,"CFUN");
- if(start!=NULL)
- {
- start=start+4;
- length=strlen(start);
- for(i=0; i<length;i++)
- {
- if((!bfind) && (start[i] >= '0') && (start[i] <= '9'))
- {
- bfind=true;
- num_start=i;
- }
- else if(bfind && ((start[i] < '0') || (start[i] > '9')))
- {
- start[i]='\0';
- break;
- }
- }
- if(bfind)
- {
- (*radio_state) = atoi(start+num_start);
- LYINFLOG("%s, radio state is %s %d",__func__,start+num_start,*radio_state);
- free(data_str);
- return 0;
- }
- }
- LYERRLOG("%s return string %s no cfun or no digit",__func__,data_str);
- free(data_str);
+ LYERRLOG("%s get p error",__func__);
return -1;
- }
- else
- {
- LYERRLOG("%s get error %d from modem",__func__,error);
- return error;
}
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int bfind=false;
+ const char* data;
+ int data_len;
+ char* data_str;
+ char* start;
+ int length;
+ int i;
+ int num_start;
+ data = lynq_get_raw_data(p,&data_len);
+ if(data==NULL || data_len == 0)
+ {
+ LYERRLOG("%s lynq_get_raw_data NULL or data_len is 0",__func__);
+ delete p;
+ return -1;
+ }
+ data_str = (char*) calloc(1,data_len+1);
+ if (NULL == data_str)
+ {
+ LYERRLOG("%s alloc mem error, data_len is %d",__func__,data_len+1);
+ delete p;
+ return -1;
+ }
+ memmove(data_str, data, data_len);
+ data_str[data_len]='\0';
+ LYINFLOG("%s return string is %s",__func__,data_str);
+ start = strstr(data_str,"CFUN");
+ if(start!=NULL)
+ {
+ start=start+4;
+ length=strlen(start);
+ for(i=0; i<length;i++)
+ {
+ if((!bfind) && (start[i] >= '0') && (start[i] <= '9'))
+ {
+ bfind=true;
+ num_start=i;
+ }
+ else if(bfind && ((start[i] < '0') || (start[i] > '9')))
+ {
+ start[i]='\0';
+ break;
+ }
+ }
+ if(bfind)
+ {
+ (*radio_state) = atoi(start+num_start);
+ LYINFLOG("%s, radio state is %s %d",__func__,start+num_start,*radio_state);
+ free(data_str);
+ delete p;
+ return 0;
+ }
+ }
+ LYERRLOG("%s return string %s no cfun or no digit",__func__,data_str);
+ free(data_str);
+ delete p;
+ return -1;
}
LYERRLOG("%s send request error %d",__func__,ret);
@@ -1447,95 +1663,88 @@
{
int ret = -1;
if(NULL == radioTech)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- int num = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_VOICE_RADIO_TECH;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
- return ret;
- }
+ LYERRLOG("%s radio tech is NULL",__func__);
+ return ret;
+ }
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_VOICE_RADIO_TECH,30,p,0,"");
+ if(ret==0)
{
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
- p.readInt32(&num);
- p.readInt32(radioTech);
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int num;
+ p->readInt32(&num);
+ p->readInt32(radioTech);
+
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return head.error;
}
- return response.error;
+ return ret;
}
int lynq_solicited_signal_strength(signalStrength_t *solSigStren)
{
- int ret = -1;
+ int ret=-1;
+
if(NULL == solSigStren)
- return ret;
- int send_num = 0;
- int recv_num = 0;
- int sum = 0;
- int LTE_signalstrength = 0;
- int WCDMA_signalstrength = 0;
- int none = 0;
- lynq_client_t client_t;
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_SIGNAL_STRENGTH;
- client_t.paramLen = 0;
- client_t.uToken = network_Global_uToken;
- memset(client_t.param,0,sizeof(client_t.param));
-
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
{
- LYERRLOG("sendto error:");
+ LYERRLOG("%s parameter is NULL",__func__);
return ret;
}
- //get data
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_SIGNAL_STRENGTH,5,p,0,"");
+ if(ret==0)
{
- return ret;
- }
- if(p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
+ }
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
}
- p.readInt32(&solSigStren->rssi);
+ int sum = 0;
+ int LTE_signalstrength = 0;
+ int WCDMA_signalstrength = 0;
+ int none = 0;
+
+ p->readInt32(&solSigStren->rssi);
if((solSigStren->rssi!=99)&&(solSigStren->rssi!=0))
{
solSigStren->gw_sig_valid = 1;
@@ -1543,18 +1752,18 @@
solSigStren->gw_sig_valid = 0;
}
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(<E_signalstrength);
- // p.readInt32(&solSigStren->signalStrength.LTE_SignalStrength.signalStrength);
- p.readInt32(&solSigStren->rsrp);
- p.readInt32(&solSigStren->rsrq);
- p.readInt32(&solSigStren->rssnr);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(<E_signalstrength);
+ // p->readInt32(&solSigStren->signalStrength.LTE_SignalStrength.signalStrength);
+ p->readInt32(&solSigStren->rsrp);
+ p->readInt32(&solSigStren->rsrq);
+ p->readInt32(&solSigStren->rssnr);
LYINFLOG("LTE_signalstrength:%d",LTE_signalstrength);
if((LTE_signalstrength!=99)&&(LTE_signalstrength!=0))
{
@@ -1563,15 +1772,15 @@
solSigStren->lte_sig_valid = 0;
}
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&none);
- p.readInt32(&WCDMA_signalstrength);
- p.readInt32(&none);
- p.readInt32(&solSigStren->rscp);
- p.readInt32(&solSigStren->ecno);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&WCDMA_signalstrength);
+ p->readInt32(&none);
+ p->readInt32(&solSigStren->rscp);
+ p->readInt32(&solSigStren->ecno);
LYINFLOG("WCDMA_signalstrength:%d",WCDMA_signalstrength);
if((WCDMA_signalstrength!=99)&&(WCDMA_signalstrength!=0))
{
@@ -1580,12 +1789,12 @@
solSigStren->wcdma_sig_valid = 0;
}
/*bug fix*/
- p.readInt32(&solSigStren->ssRsrp);
- p.readInt32(&solSigStren->ssRsrq);
- p.readInt32(&solSigStren->ssSinr);
- p.readInt32(&solSigStren->csiRsrp);
- p.readInt32(&solSigStren->csiRsrq);
- p.readInt32(&solSigStren->csiSinr);
+ p->readInt32(&solSigStren->ssRsrp);
+ p->readInt32(&solSigStren->ssRsrq);
+ p->readInt32(&solSigStren->ssSinr);
+ p->readInt32(&solSigStren->csiRsrp);
+ p->readInt32(&solSigStren->csiRsrq);
+ p->readInt32(&solSigStren->csiSinr);
sum = (solSigStren->ssRsrp) + (solSigStren->ssRsrq) + (solSigStren->ssSinr) + (solSigStren->csiRsrp)+\
(solSigStren->csiRsrq) + (solSigStren->csiSinr);
if(sum != 0)
@@ -1593,57 +1802,64 @@
solSigStren->nr_sig_valid = 1;
}else{
LYERRLOG("None of NR signal info");
- }
+ }
+
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return 0;
}
- return response.error;
+
+ LYERRLOG("%s send request error %d",__func__,ret);
+
+ return ret;
}
int lynq_set_ims(const int ims_mode)
{
+ if(ims_mode == -1000)
+ {
+ g_inner_test = 1;
+ return 0;
+ }
+
int ret = -1;
if (ims_mode < 0 || ims_mode > 1)
{
- LYERRLOG("incoming ims_mode error");
+ LYERRLOG("%s parameter %d error",__func__,ims_mode);
return ret;
- }
- int send_num = 0;
- int recv_num = 0;
- lynq_client_t client_t;
-
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_SET_IMS_ENABLE;
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
- sprintf(client_t.param,"%d",ims_mode);
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if (send_num<0)
+ }
+
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_SET_IMS_ENABLE,30,p,1,"%d",ims_mode);
+ if(ret==0)
{
- LYERRLOG("sendto error:");
- return ret;
- }
-
- Parcel p;
- ret = get_response(p,30);
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- if (ret != 0)
- {
- return ret;
- }
- if (p.dataAvail() > 0)
- {
- p.readInt32(&response.resp_type);
- p.readInt32(&response.request);
- p.readInt32(&response.slot_id);
- p.readInt32(&response.error);
- if(response.error != 0)
+ if(p==NULL)
{
- LYERRLOG("response return error");
- return response.error;
+ LYERRLOG("%s get p error",__func__);
+ return -1;
}
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error %d",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+ LYINFLOG("%s set %d suc",__func__,ims_mode);
+ delete p;
+ return 0;
}
- return response.error;
+ LYERRLOG("%s get response from modem failure, ret is %d",__func__,ret);
+ return ret;
}
@@ -1826,65 +2042,64 @@
int lynq_oos_recover_timer_interval(int mode, char interval[LY_RECOVER_TIMER_INTERVAL],char result[LY_RECOVER_TIMER_INTERVAL])
{
- int ret;
- int send_num;
- int recv_len;
- Parcel p;
- char res_data[LY_RECOVER_TIMER_INTERVAL] = {0};
- lynq_client_t client_t;
- char response_interval[LY_RECOVER_TIMER_INTERVAL*2] = {0};
-
- ret = -1;
- send_num = -1;
- recv_len = -1;
-
- LYINFLOG("lynq_oos_recover_timer_interval start");
- if((mode < 0) || (mode >1) || (NULL == interval) || (NULL == result))
+ int ret=-1;
+
+ if((mode < 0) || (mode >1) || (mode == 0 && NULL == interval) || (NULL == result))
{
- LYERRLOG("lynq_oos_recover_timer_interval paramter fail!!!");
- return ret;
+ LYERRLOG("%s mode %d interval %s result %s error",__func__,mode,interval,result);
+ return -1;
}
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_OEM_HOOK_RAW; //LYNQ_REQUEST_OOS_RECOVER_TIMER_INTERVAL
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
if(mode == 0)
{
- sprintf(client_t.param,"AT+ERSCFG=%s",interval);
+ ret=lynq_get_common_request(RIL_REQUEST_OEM_HOOK_RAW,5,p,1,"AT+ERSCFG=%s",interval);
}
- else
+ else
{
- sprintf(client_t.param,"AT+ERSCFG?",interval);
+ ret=lynq_get_common_request(RIL_REQUEST_OEM_HOOK_RAW,5,p,1,"AT+ERSCFG?");
}
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num < 0)
+
+ if(ret==0)
{
- LYERRLOG("sendto error:%s",strerror(errno));
- return ret;
- }
- ret = get_response(p,-1); //use defualt time (5s)
- if(ret != 0)
- {
- return ret;
- }
- JumpHeader(p, &response.resp_type, &response.request, &response.slot_id, &response.error);
- LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",response.resp_type, response.request, response.slot_id, response.error);
- if(0 == response.error)
- {
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
+ if(p==NULL)
+ {
+ LYERRLOG("%s get p error",__func__);
+ return -1;
+ }
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int recv_len;
+ char res_data[LY_RECOVER_TIMER_INTERVAL] = {0};
+ char response_interval[LY_RECOVER_TIMER_INTERVAL*2] = {0};
+
+
LYINFLOG("get recover timer interval");
- p.readInt32(&recv_len);
+ p->readInt32(&recv_len);
if(recv_len == -1)
{
LYINFLOG("no responset");
+ delete p;
return -1;
}
else
{
LYINFLOG("recv_len:%d",recv_len);
- p.read(response_interval,recv_len);
+ p->read(response_interval,recv_len);
}
LYINFLOG("response_interval:%s",response_interval);
ret = parse_at_result(response_interval,res_data,LY_RECOVER_TIMER_INTERVAL);
@@ -1895,81 +2110,78 @@
memcpy(result,res_data,strlen(res_data));
}
}
- LYINFLOG("ret:%d",ret);
- return ret;
+ LYERRLOG("%s ret:%d",__func__,ret);
+ delete p;
+ return ret;
}
- else
- {
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- return response.error;
- }
+
+ LYERRLOG("%s send request error %d",__func__,ret);
+
+ return ret;
}
int lynq_oos_deep_sleep_recover_timer_interval(int recovery_threshold,int fullband_timer,int sniffer_timer,int inactive_mode)
{
- int ret;
- int send_num;
- int recv_len;
- Parcel p;
- char res_data[LY_RECOVER_TIMER_INTERVAL] = {0};
- lynq_client_t client_t;
- char response_interval[LY_RECOVER_TIMER_INTERVAL*2] = {0};
+ int ret=-1;
- ret = -1;
- send_num = -1;
- recv_len = -1;
-
- LYINFLOG("lynq_oos_deep_sleep_recover_timer_interval start");
if(((recovery_threshold < 2) || (recovery_threshold > 10)) || ((fullband_timer < 90) || (fullband_timer > 360)) ||
((sniffer_timer < 10) || (sniffer_timer > 60)) || ((inactive_mode < 0) || (inactive_mode > 1)))
{
- LYERRLOG("lynq_oos_deep_sleep_recover_timer_interval paramter fail!!!");
+ LYERRLOG("%s paramter recovery_threshold %d fullband_timer %d sniffer_timer %d inactive_mode %d fail!",recovery_threshold,fullband_timer,sniffer_timer,inactive_mode);
return ret;
}
- memset(&client_t,0,sizeof(client_t));
- client_t.request = RIL_REQUEST_OEM_HOOK_RAW; //LYNQ_REQUEST_OOS_DEEP_SLEEP_RECOVER_TIMER_INTERVAL
- client_t.paramLen = 1;
- client_t.uToken = network_Global_uToken;
- sprintf(client_t.param,"AT+ESRVREC=%d,%d,%d,%d",recovery_threshold,fullband_timer,sniffer_timer,inactive_mode);
- pthread_mutex_lock(&g_lynq_network_sendto_mutex);
- send_num = sendto(network_sock_fd,&client_t,sizeof(client_t),0,(struct sockaddr *)&network_addr_serv,network_len_addr_serv);
- if(send_num<0)
+ lynq_resp_t head;
+ Parcel* p=NULL;
+
+ ret=lynq_get_common_request(RIL_REQUEST_OEM_HOOK_RAW,5,p,1,"AT+ESRVREC=%d,%d,%d,%d",recovery_threshold,fullband_timer,sniffer_timer,inactive_mode);
+ if(ret==0)
{
- LYERRLOG("sendto error:%s",strerror(errno));
- return ret;
- }
- ret = get_response(p,-1); //use defualt time (5s)
- if(ret != 0)
- {
- return ret;
- }
- JumpHeader(p, &response.resp_type, &response.request, &response.slot_id, &response.error);
- LYINFLOG("resp_type=%d,request=%d,slot_id=%d,error_code=%d",response.resp_type, response.request, response.slot_id, response.error);
- if(0 == response.error)
- {
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- LYINFLOG("set deep sleep recover timer interval response");
- p.readInt32(&recv_len);
+ if(p==NULL)
+ {
+ LYERRLOG("%s get p error",__func__);
+ return -1;
+ }
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s get head error",__func__,ret);
+ delete p;
+ return -1;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s mdm return head error %d",__func__,head.error);
+ delete p;
+ return head.error;
+ }
+
+ int recv_len;
+ char res_data[LY_RECOVER_TIMER_INTERVAL] = {0};
+ char response_interval[LY_RECOVER_TIMER_INTERVAL*2] = {0};
+
+ p->readInt32(&recv_len);
if(recv_len == -1)
{
LYINFLOG("no responset");
+ delete p;
return -1;
}
else
{
LYINFLOG("recv_len:%d",recv_len);
- p.read(response_interval,recv_len);
+ p->read(response_interval,recv_len);
}
LYINFLOG("response_interval:%s",response_interval);
ret = parse_at_result(response_interval,res_data,LY_RECOVER_TIMER_INTERVAL);
- return ret;
+ LYERRLOG("%s ret:%d",__func__,ret);
+ delete p;
+ return ret;
}
- else
- {
- pthread_mutex_unlock(&g_lynq_network_sendto_mutex);
- return response.error;
- }
+
+ LYERRLOG("%s send request error %d",__func__,ret);
+
+ return ret;
}
#endif