[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;