[BugFix][L805A][bug-view-73]When the primary card is different from the service card, the datacalllist returns empty
Only Configure: Yes
Affected branch: DSDS
Affected module: Data
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No
Change-Id: I570f08ebb3211d7ca74120127ee4ff3e741604d9
diff --git a/common_src/lib/liblynq-data/lynq_data.cpp b/common_src/lib/liblynq-data/lynq_data.cpp
index 3725623..9ed40da 100755
--- a/common_src/lib/liblynq-data/lynq_data.cpp
+++ b/common_src/lib/liblynq-data/lynq_data.cpp
@@ -38,6 +38,19 @@
int paramLen;
char param[LYNQ_REQUEST_PARAM_BUF];
}lynq_client_t;
+//xy.he add for bug-view-73 on 2024-08-26 start
+#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
+//xy.he add for bug-view-73 on 2024-08-26 end
typedef enum{
LYNQ_E_CARDSTATE_ERROR=8000,
/* The voice service state is out of service*/
@@ -513,6 +526,21 @@
p = NULL;
}
}
+//xy.he add for bug-view-73 on 2024-08-26 start
+int send_request_dual(int sockfd,lynq_client_dual_t *client_tmp,int size)
+{
+ int ret=0;
+ LYINFLOG("client size = %d",size);
+ ret = sendto(sockfd,client_tmp,size,0,(struct sockaddr *)&lynq_data_socket_server_addr,lynq_data_socket_server_addr_len);
+ LYINFLOG("sendto size = %d",ret);
+ if(ret==-1)
+ {
+ LYERRLOG("%s:errno code:%d",__FUNCTION__,errno);
+ return -1;
+ }
+ return 0;
+}
+//xy.he add for bug-view-73 on 2024-08-26 end
int send_request(int sockfd,lynq_client_t *client_tmp)
{
int ret=0;
@@ -859,7 +887,9 @@
}
int get_imsi();
int check_apn_status();
-
+//xy.he add for bug-view-73 on 2024-08-26 start
+int getDataSim();
+//xy.he add for bug-view-73 on 2024-08-26 end
int get_timeout_value();
int lynq_init_data(int uToken)
{
@@ -1335,7 +1365,12 @@
int getDataCallLists(lynq_data_call_response_v11_t dataCallList[LYNQ_APN_CHANNEL_MAX],int *realNum)
{
Parcel *p = NULL;
+ //xy.he add for bug-view-73 on 2024-08-26 start
+ #ifdef MODE_DSDS
+ lynq_client_dual_t client;
+ #else
lynq_client_t client;
+ #endif
int resp_type = -1;
int token;
int request = -1;
@@ -1352,6 +1387,26 @@
client.uToken = get_utoken();;
client.request = 57;//RIL_REQUEST_DATA_CALL_LIST
client.paramLen = 0;
+ #ifdef MODE_DSDS
+ bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
+ char slot_status = '0';
+ int data_sim = -1;
+ data_sim = getDataSim();
+ if(data_sim >= 0)
+ {
+ client.slot_status = '1';
+ client.slot = (char)('0'+data_sim);
+ }
+ LYINFLOG("uToken=%d,request=%d,slot_status=%c,slot=%c,paralen=%d,param=%s",client.uToken,client.request,client.slot_status,client.slot,client.paramLen,client.param);
+ pthread_mutex_lock(&g_lynq_data_sendto_mutex);
+ if(send_request_dual(lynq_client_sockfd,&client,sizeof(client))==-1)
+ {
+ LYERRLOG("send request fail");
+ perror("[LYNQ_DATA] send request fail:");
+ pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
+ return -1;
+ }
+ #else
bzero(client.param,LYNQ_REQUEST_PARAM_BUF);
LYINFLOG("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
pthread_mutex_lock(&g_lynq_data_sendto_mutex);
@@ -1362,6 +1417,8 @@
pthread_mutex_unlock(&g_lynq_data_sendto_mutex);
return -1;
}
+ #endif
+ //xy.he add for bug-view-73 on 2024-08-26 start
//get_response(lynq_client_sockfd,p);
error = wait_response(lynq_client_sockfd,p,client.uToken);
if(error!=0)
@@ -1978,6 +2035,42 @@
fclose(fp);
return 0;
}
+//xy.he add for bug-view-73 on 2024-08-26 start
+int getDataSim()
+{
+ LYINFLOG("getDataSim enter");
+ const char *data_sim_cmd = "uci get radio_property.property.persist_vendor_radio_data_sim";
+ char cmd_ret[8] ={0};
+ int slot = 0;
+ int sim_ret = -1;
+ int ret = -1;
+ const char *empty_str = ":empty";
+
+ sim_ret = exec_cmd(data_sim_cmd,cmd_ret,8);
+ if(sim_ret==0)
+ {
+ if(strlen(cmd_ret)==0)
+ {
+ LYERRLOG("not have data_sim config in uci ram");
+ return -1;
+ }
+ if(strncmp(cmd_ret,empty_str,strlen(empty_str))==0)
+ {
+ LYERRLOG("sim is empty");
+ return -2;
+ }
+ LYINFLOG("sim is %s",cmd_ret);
+ slot = atoi(cmd_ret);
+ return (slot-1);
+ }
+ else
+ {
+ LYERRLOG("exec cmd fail");
+ return -1;
+ }
+}
+//xy.he add for bug-view-73 on 2024-08-26 end
+
int check_apn_status()
{
LYINFLOG("check_apn_status enter");
diff --git a/common_src/lib/liblynq-data/makefile b/common_src/lib/liblynq-data/makefile
index e2d17d0..d31ca9c 100755
--- a/common_src/lib/liblynq-data/makefile
+++ b/common_src/lib/liblynq-data/makefile
@@ -39,6 +39,10 @@
endif
+#xy.he add for bug-view-73 on 2024-08-26 start
+LOCAL_CFLAGS += -DMODE_DSDS
+#xy.he add for bug-view-73 on 2024-08-26 end
+
SOURCES = $(wildcard *.cpp)
EXECUTABLE = liblynq-data.so