[feature][T8TSK-73][TCAM_T800_SW_0265] add api interface to query radio power state
Change-Id: Ie2f9b5dd9683b465eb403e0f6fc05540a7044de7
diff --git a/lib/liblynq-network/lynq_network.cpp b/lib/liblynq-network/lynq_network.cpp
index 6b0bdbf..fa3090b 100755
--- a/lib/liblynq-network/lynq_network.cpp
+++ b/lib/liblynq-network/lynq_network.cpp
@@ -155,6 +155,42 @@
}
}
+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;
+ client.request = request_id;
+ client.paramLen = argc;
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ if(argc!=0)
+ {
+ va_list args;
+ va_start(args, format);
+ vsnprintf(client.param, LYNQ_REQUEST_PARAM_BUF, format, args);
+ va_end(args);
+ }
+ 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(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);
+ return ret;
+}
+
+
int wait_signal_changes()
{
int ret = 0;
@@ -1292,6 +1328,121 @@
return response.error;
}
+const char * lynq_get_raw_data(Parcel &p, int* data_len)
+{
+ int32_t len;
+ int status;
+ char *data;
+
+ *data_len=0;
+
+ status = p.readInt32(&len);
+
+ if (status != 0) {
+ LYERRLOG("%s status is %d",__func__,status);
+ return NULL;
+ }
+
+ // The java code writes -1 for null arrays
+ if (((int)len) == -1 || ((int)len) == 0)
+ {
+ LYERRLOG("%s len is %d",__func__,len);
+ return NULL;
+ }
+ LYINFLOG("%s len is %d",__func__,len);
+
+ data = (char*) p.readInplace(len);
+ *data_len=len;
+
+ return data;
+}
+
+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;
+
+ if(NULL == radio_state)
+ {
+ LYERRLOG("%s radio state is NULL",__func__);
+ return -1;
+ }
+
+ 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)
+ {
+ 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);
+ return -1;
+ }
+ else
+ {
+ LYERRLOG("%s get error %d from modem",__func__,error);
+ return error;
+ }
+ }
+
+ LYERRLOG("%s send request error %d",__func__,ret);
+
+ return ret;
+}
+
int lynq_query_radio_tech(int* radioTech)
{
int ret = -1;