[Feature][DSDS-1]Check the network cellinfo of two SIM cards at once(lynq_query_cellinfo_dual)

Only Configure:No
Affected branch:DSDS
Affected module:NETWORK
Is it affected on both ZXIC and MTK: MTK
Self-test: Yes
Doc Update:Need

Change-Id: I3fa61b775017a814190d28fd6b163da1d62cca86
diff --git a/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h b/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
index 7de3cf1..e5ee1b1 100755
--- a/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
+++ b/common_src/lib/liblynq-network/include/lynq_network/lynq_network.h
@@ -123,6 +123,12 @@
     lynq_registration_state_info_t registrtion_state_info_for_sim1;

 }lynq_registration_state_dual_info_t;

 

+typedef struct{

+    int slot; //slot id, 0 or 1

+    uint64_t cellinfo;

+    int tac;

+    int earfcn;

+}cellInfo_dual_t;

 

 

 /**

@@ -145,6 +151,18 @@
  */

 int lynq_solicited_signal_strength_dual(signalStrength_dual_t *solSigStren_dual);

 

+/**

+ * @brief check cell_info for all sim cards once

+ * @param cellInfo_dual_t:cellinfo 

+ * @param realNum:cell count

+ * @return int

+ * 0:success

+ * other:fail

+ */

+int lynq_query_cell_info_dual(cellInfo_dual_t cellinfo[CELLINFO_MAX_NUM],int * realNum);

+

+

+

 #endif

 

 

diff --git a/common_src/lib/liblynq-network/lynq_network.cpp b/common_src/lib/liblynq-network/lynq_network.cpp
index 8e5b7ad..b396622 100755
--- a/common_src/lib/liblynq-network/lynq_network.cpp
+++ b/common_src/lib/liblynq-network/lynq_network.cpp
@@ -1172,6 +1172,87 @@
 }

 #ifdef MODE_DSDS

 

+int lynq_store_cell_info_dual(Parcel *p,cellInfo_dual_t cellinfo[CELLINFO_MAX_NUM],int * realNum,int slot)

+{

+    int num;

+    int count = 0;

+    p->readInt32(&num);

+    LYINFLOG("cell info num:%d,cell count :%d",num,* realNum);

+    for(int i = *realNum;i<*realNum+num && count < 5;i++)

+    {

+        count++;

+        cellinfo[i].slot = slot;

+        copyCellInfoList(p,&(cellinfo[i].cellinfo),&(cellinfo[i].tac),&(cellinfo[i].earfcn));

+    }

+    *realNum += count;

+    LYINFLOG("%s suc",__func__); 

+    if(p!=NULL)

+    {

+        delete p;

+    }

+    return RESULT_OK;  

+}

+

+

+int lynq_query_cell_info_dual(cellInfo_dual_t cellinfo[CELLINFO_MAX_NUM],int * realNum)

+{

+    if(g_module_init_flag != MODULE_RUNNING)

+    {

+        LYERRLOG("%s module state %d error",__func__,g_module_init_flag);

+        return LYNQ_E_CONFLICT;

+    }

+    if(NULL == realNum || cellinfo == NULL)

+    {

+        LYERRLOG("%s there is parameter is NULL",__func__);  

+        return LYNQ_E_PARAMETER_ANONALY;

+    }      

+    

+    Parcel* parcel_for_sim0=NULL;

+    Parcel* parcel_for_sim1=NULL;      

+    

+    int ret=lynq_send_common_request_dual(parcel_for_sim0,g_wait_time,RIL_REQUEST_GET_CELL_INFO_LIST,0,'1','0',"");

+    

+    if(ret!=RESULT_OK)

+    {

+        LYERRLOG("%s call lynq_send_common_request failure, ret is %d",__func__,ret);

+        if(parcel_for_sim0!=NULL)

+        {

+            delete parcel_for_sim0;

+        }

+        return ret;  

+    }   

+    

+    ret = lynq_store_cell_info_dual(parcel_for_sim0,cellinfo,realNum,0);

+    if(ret!=RESULT_OK)

+    {

+        LYERRLOG("lynq_store_cell_info_dual failure, ret is %d",__func__,ret);

+        return ret;  

+    }   

+

+    ret=lynq_send_common_request_dual(parcel_for_sim1,g_wait_time,RIL_REQUEST_GET_CELL_INFO_LIST,0,'1','1',"");

+    if(ret!=RESULT_OK)

+    {

+        LYERRLOG("%s call lynq_send_common_request failure, ret is %d",__func__,ret);

+        if(parcel_for_sim0!=NULL)

+        {

+            delete parcel_for_sim0;

+        }

+        return ret;  

+    }

+

+    ret = lynq_store_cell_info_dual(parcel_for_sim1,cellinfo,realNum,1);

+    if(ret!=RESULT_OK)

+    {

+        LYERRLOG("lynq_store_cell_info_dual failure, ret is %d",__func__,ret);

+        return ret;  

+    }   

+

+    return RESULT_OK;  

+

+

+}

+

+

 int lynq_store_registration_state_dual(Parcel* p,const char * str,lynq_registration_state_info_t* registration_info)

 {

     

@@ -1245,7 +1326,10 @@
         LYINFLOG("%s suc",__func__); 

     }    

    

-    delete p;

+    if(p!=NULL)

+    {

+        delete p;

+    }

     return ret;

 

 }

@@ -1292,6 +1376,10 @@
     if(ret!=RESULT_OK)

     {

         LYERRLOG("%s call lynq_send_common_request failure, ret is %d",__func__,ret);

+        if(parcel_for_sim0!=NULL)

+        {

+            delete parcel_for_sim0;

+        }

         return ret;  

     }   

 

@@ -1308,6 +1396,10 @@
     if(ret!=RESULT_OK)

     {

         LYERRLOG("%s call lynq_send_common_request failure, ret is %d",__func__,ret);

+        if(parcel_for_sim1!=NULL)

+        {

+            delete parcel_for_sim1;

+        }

         return ret;  

     }   

 

@@ -1395,7 +1487,10 @@
     }        

 

     LYINFLOG("%s suc",__func__);  

-    delete p;

+    if(p!=NULL)

+    {

+        delete p;

+    }

     return RESULT_OK;    

 

 }

@@ -1419,6 +1514,10 @@
     if(ret!=RESULT_OK)

     {

         LYERRLOG("%s for sim0 call lynq_send_common_request failure, ret is %d",__func__,ret);

+        if(p_for_sim0!=NULL)

+        {

+            delete p_for_sim0;

+        }

         return ret;  

     }            

     

@@ -1433,6 +1532,10 @@
     if(ret!=RESULT_OK)

     {

         LYERRLOG("%s for sim1 call lynq_send_common_request failure, ret is %d",__func__,ret);

+        if(p_for_sim1!=NULL)

+        {

+            delete p_for_sim1;

+        }

         return ret;  

     }