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