Merge "[Feature][L805-13] lynq_set_default_sim_except_data and lynq_get_default_sim for DSDS" into DSDS
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 ced745b..48a4b8c 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
@@ -83,6 +83,24 @@
int lynq_set_feature_config_sbp(int sbp_flag);
int lynq_query_feature_config_sbp(int *sbp_status );
+#ifdef MODE_DSDS
+
+typedef struct{
+ signalStrength_t solSigStren_for_sim0;
+ signalStrength_t solSigStren_for_sim1;
+}signalStrength_dual_t;
+
+/**
+ * @brief check signal_strength for all sim cards once
+ * @param signalStrength_dual_t:two signalStrength_t struct for two sim
+ * @return int
+ * 0:success
+ * other:fail
+ */
+int lynq_solicited_signal_strength_dual(signalStrength_dual_t *solSigStren_dual);
+
+#endif
+
typedef enum {
NETWORK_STATE_BUFFER_TYPE_VOICE_REG,
diff --git a/common_src/lib/liblynq-network/lynq_module_socket.cpp b/common_src/lib/liblynq-network/lynq_module_socket.cpp
index 35dd9d6..3472454 100755
--- a/common_src/lib/liblynq-network/lynq_module_socket.cpp
+++ b/common_src/lib/liblynq-network/lynq_module_socket.cpp
@@ -37,6 +37,17 @@
char param[LYNQ_REQUEST_PARAM_BUF];
}lynq_client_t;
+#ifdef MODE_DSDS
+typedef struct{
+ int uToken;
+ int request;
+ int paramLen;
+ char param[LYNQ_REQUEST_PARAM_BUF];
+ char slot_status;
+ char slot;
+}lynq_client_dual_t;
+#endif
+
typedef struct{
int resp_type;
int token;
@@ -293,6 +304,77 @@
return ret;
}
+#ifdef MODE_DSDS
+int lynq_send_common_request_dual(Parcel*& p, int time_out, int request_id, int argc, char slot_status ,char slot,const char* format,...)
+{
+ lynq_client_dual_t client;
+ int ret;
+ int send_num;
+
+ client.uToken = g_module_Global_uToken;
+ g_module_Global_uToken=(g_module_Global_uToken+1)%10000;/*0-10000*/
+ client.request = request_id;
+ client.paramLen = argc;
+ client.slot_status = slot_status;
+ client.slot = slot;
+ 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,slot_status=%c,slot=%c",client.uToken,client.request,client.paramLen,client.param,client.slot_status,client.slot);
+ pthread_mutex_lock(&s_sendto_mutex);
+ if(s_inner_test==1)
+ {
+ send_num = 1;
+ }
+ else
+ {
+ send_num = sendto(module_rc_sock_fd,&client,sizeof(client),0,(struct sockaddr *)&module_rc_addr_serv,module_len_rc_addr_serv);
+ }
+ if(s_inner_test>=1000)
+ {
+ time_out = s_inner_test-1000;
+ }
+ pthread_mutex_unlock(&s_sendto_mutex);
+
+ if(send_num <= 0)
+ {
+ LYERRLOG("send request fail, send num is %d", send_num);
+ return LYNQ_E_SEND_REQUEST_FAIL;
+ }
+ ret = waitResponse(p, client.uToken,time_out);
+
+ if(ret==0)
+ {
+ lynq_resp_t head;
+ ret=GetHeader(p,head);
+ if(ret!=0)
+ {
+ LYERRLOG("%s %d get head error %d",__func__,client.uToken,ret);
+ delete p;
+ return LYNQ_E_GET_HEAD_ERROR;
+ }
+ if(head.error!=0)
+ {
+ LYERRLOG("%s %d mdm return head error %d",__func__,client.uToken,head.error);
+ delete p;
+ return head.error;
+ }
+ LYERRLOG("%s %d suc",__func__,client.uToken);
+ return RESULT_OK;
+ }
+
+ LYERRLOG("%s %d fail, ret is %d",__func__,client.uToken,ret);
+
+ return ret;
+}
+
+#endif
+
/*hq add for urc broadcase optimisson 2023/01/03 begin*/
#define SHM_BUFFER_INDEX_OFFSET 1
#define SHM_BUFFER_SIZE_OFFSET 16
diff --git a/common_src/lib/liblynq-network/lynq_module_socket.h b/common_src/lib/liblynq-network/lynq_module_socket.h
index 98f968e..299200d 100755
--- a/common_src/lib/liblynq-network/lynq_module_socket.h
+++ b/common_src/lib/liblynq-network/lynq_module_socket.h
@@ -9,6 +9,11 @@
extern int g_wait_time;
int lynq_send_common_request(Parcel*& p, int time_out, int request_id, int argc, const char* format,...);
+#ifdef MODE_DSDS
+int lynq_send_common_request_dual(Parcel*& p, int time_out, int request_id, int argc, char slot_status ,char slot,const char* format,...);
+#endif
+
+
int lynq_start_all_urc_socket_thread();
void lynq_close_all_urc_socket_thread();
int lynq_start_all_rc_socket_thread();
diff --git a/common_src/lib/liblynq-network/lynq_network.cpp b/common_src/lib/liblynq-network/lynq_network.cpp
index b89612e..dbc9c50 100755
--- a/common_src/lib/liblynq-network/lynq_network.cpp
+++ b/common_src/lib/liblynq-network/lynq_network.cpp
@@ -1169,6 +1169,134 @@
delete p;
return RESULT_OK;
}
+#ifdef MODE_DSDS
+
+int lynq_store_signal_strength_dual(Parcel* p,signalStrength_t *solSigStren)
+{
+ int none = 0;
+ int rscp;
+ int ecno;
+
+ p->readInt32(&solSigStren->rssi);
+ if(is_rssi_valid(solSigStren->rssi))
+ {
+ solSigStren->gw_sig_valid = 1;
+ }else{
+ 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(&solSigStren->lte_signalstrength);
+
+ // p->readInt32(&solSigStren->signalStrength.LTE_SignalStrength.signalStrength);
+ p->readInt32(&solSigStren->rsrp);
+ p->readInt32(&solSigStren->rsrq);
+ p->readInt32(&solSigStren->rssnr);
+ LYINFLOG("LTE_signalstrength:%d",solSigStren->lte_signalstrength);
+ if(is_rssi_valid(solSigStren->lte_signalstrength))
+ {
+ solSigStren->lte_sig_valid = 1;
+ }else{
+ solSigStren->lte_sig_valid = 0;
+ }
+
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&none);
+ p->readInt32(&solSigStren->wcdma_signalstrength);
+ p->readInt32(&none);
+ p->readInt32(&rscp);
+ p->readInt32(&ecno);
+
+
+ LYINFLOG("WCDMA_signalstrength:%d",solSigStren->wcdma_signalstrength);
+ if(is_rssi_valid(solSigStren->wcdma_signalstrength))
+ {
+ solSigStren->wcdma_sig_valid = 1;
+ convert_rscp(rscp,&solSigStren->rscp);
+ convert_ecno(ecno,&solSigStren->ecno);
+ }else{
+ solSigStren->wcdma_sig_valid = 0;
+ }
+ /*bug fix*/
+ p->readInt32(&solSigStren->ssRsrp);
+
+ if(is_nr_ss_rsrp_valid(solSigStren->ssRsrp))
+ {
+ solSigStren->nr_sig_valid = 1;
+ p->readInt32(&solSigStren->ssRsrq);
+ p->readInt32(&solSigStren->ssSinr);
+ p->readInt32(&solSigStren->csiRsrp);
+ p->readInt32(&solSigStren->csiRsrq);
+ p->readInt32(&solSigStren->csiSinr);
+ }
+ else{
+ LYERRLOG("None of NR signal info");
+ solSigStren->nr_sig_valid = 0;
+ }
+
+ LYINFLOG("%s suc",__func__);
+ delete p;
+ return RESULT_OK;
+
+}
+
+int lynq_solicited_signal_strength_dual(signalStrength_dual_t *solSigStren_dual)
+{
+ if(g_module_init_flag != MODULE_RUNNING)
+ {
+ LYERRLOG("%s module state %d error",__func__,g_module_init_flag);
+ return LYNQ_E_CONFLICT;
+ }
+ if(NULL == solSigStren_dual)
+ {
+ LYERRLOG("%s parameter is NULL",__func__);
+ return LYNQ_E_PARAMETER_ANONALY;
+ }
+
+ Parcel* p_for_sim0=NULL;
+ Parcel* p_for_sim1=NULL;
+ int ret=lynq_send_common_request_dual(p_for_sim0,g_wait_time,RIL_REQUEST_SIGNAL_STRENGTH,0,'1','0',"");
+ if(ret!=RESULT_OK)
+ {
+ LYERRLOG("%s for sim0 call lynq_send_common_request failure, ret is %d",__func__,ret);
+ return ret;
+ }
+
+ ret=lynq_store_signal_strength_dual(p_for_sim0,&(solSigStren_dual->solSigStren_for_sim0));
+ if(ret!=RESULT_OK)
+ {
+ LYERRLOG("lynq_store_signal_strength_DSDS failure, ret is %d",__func__,ret);
+ return ret;
+ }
+
+ ret=lynq_send_common_request_dual(p_for_sim1,g_wait_time,RIL_REQUEST_SIGNAL_STRENGTH,0,'1','1',"");
+ if(ret!=RESULT_OK)
+ {
+ LYERRLOG("%s for sim1 call lynq_send_common_request failure, ret is %d",__func__,ret);
+ return ret;
+ }
+
+ ret=lynq_store_signal_strength_dual(p_for_sim1,&(solSigStren_dual->solSigStren_for_sim1));
+ if(ret!=RESULT_OK)
+ {
+ LYERRLOG("lynq_store_signal_strength_DSDS failure, ret is %d",__func__,ret);
+ return ret;
+ }
+
+ return RESULT_OK;
+}
+
+
+#endif
int lynq_set_ims(const int ims_mode)
{
@@ -1216,6 +1344,11 @@
LYINFLOG("incoming solSigStren or slot_id is NULL!!!");
return LYNQ_E_PARAMETER_ANONALY;
}
+ #ifdef MODE_DSDS
+ *slot_id = s_module_urc_slot_id;
+ LYINFLOG("slot_id = %d",s_module_urc_slot_id);
+ #else
+ #endif
switch(handle)
{
case RIL_UNSOL_SIGNAL_STRENGTH: //1009
@@ -1241,8 +1374,11 @@
}
default:
{
+ #ifdef MODE_DSDS
+ #else
*slot_id = s_module_urc_slot_id;
LYINFLOG("slot_id = %d",s_module_urc_slot_id);
+ #endif
}
}
return RESULT_OK;
diff --git a/common_src/lib/liblynq-network/makefile b/common_src/lib/liblynq-network/makefile
index 044d7f5..a5c8892 100755
--- a/common_src/lib/liblynq-network/makefile
+++ b/common_src/lib/liblynq-network/makefile
@@ -14,6 +14,12 @@
LOCAL_CFLAGS += -DGSW_RIL_CFG
endif
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsds)
+ LOCAL_CFLAGS += -DANDROID_SIM_COUNT_2 \
+ -DANDROID_MULTI_SIM \
+ -DMODE_DSDS
+endif
+
$(warning ################# lynq network demo ROOT: $(ROOT),includedir:$(includedir))
LOCAL_PATH = .