[Feature][L805-13] lynq_set_default_sim_except_data and lynq_get_default_sim for DSDS
Only Configure:No
Affected branch:DSDS
Affected module:SIM
Is it affected on both ZXIC and MTK: MTK
Self-test: Yes
Doc Update:Need
Change-Id: I863d9c6cf69b8e36a8980b178cac8e1dbbb77237
diff --git a/common_src/framework/lynq-ril-service/src/common.h b/common_src/framework/lynq-ril-service/src/common.h
index 46da418..53b5c31 100755
--- a/common_src/framework/lynq-ril-service/src/common.h
+++ b/common_src/framework/lynq-ril-service/src/common.h
@@ -254,6 +254,9 @@
void registerForNetworkInfo(netwokInfoNotify cb);
void unregisterATcmd();
int emResultNotify(const char *str);
+#ifdef MODE_DSDS
+ int lynq_emResultNotify(Parcel &p);
+#endif
void ATCIRequest(int request, char* reqString, void* t,int argc, char**argv);
void startWakupLoop(void);
/*Warren add for FAW platform 2021/9/27 start*/
diff --git a/common_src/framework/lynq-ril-service/src/lynq_interface.h b/common_src/framework/lynq-ril-service/src/lynq_interface.h
index 963e306..f8cdf47 100755
--- a/common_src/framework/lynq-ril-service/src/lynq_interface.h
+++ b/common_src/framework/lynq-ril-service/src/lynq_interface.h
@@ -40,6 +40,8 @@
#define LYNQ_REQUEST_GET_RTP_PARAM (LYNQ_REQUEST_VENDOR_BASE + 25)
#define LYNQ_REQUEST_SET_CALL_RTP_SSRC (LYNQ_REQUEST_VENDOR_BASE + 26)
#define LYNQ_REQUEST_GET_CALL_RTP_SSRC (LYNQ_REQUEST_VENDOR_BASE + 27)
+#define LYNQ_REQUEST_GET_DEFAULT_SIM_ALL (LYNQ_REQUEST_VENDOR_BASE + 28)
+#define LYNQ_REQUEST_SET_DEFAULT_SIM_ALL_EXCEPT_DATA (LYNQ_REQUEST_VENDOR_BASE + 29)
#ifdef ECALL_SUPPORT
#define RIL_UNSOL_ECALL_T2_TIMER_OUT 9000
diff --git a/common_src/framework/lynq-ril-service/src/ril.cpp b/common_src/framework/lynq-ril-service/src/ril.cpp
index a5f9a15..fd43cda 100755
--- a/common_src/framework/lynq-ril-service/src/ril.cpp
+++ b/common_src/framework/lynq-ril-service/src/ril.cpp
@@ -137,6 +137,10 @@
int enable_bt_resp = 0;
int wakeup_token = -1;
struct sockaddr_in client_addr;
+#ifdef MODE_DSDS
+struct sockaddr_in lynq_client_addr;
+#endif
+
#define ANDROID_WAKE_LOCK_NAME "radio-interface"
@@ -5303,6 +5307,8 @@
case LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY: return "LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY";
case LYNQ_REQUEST_LIST_SMS_FROM_MEMORY: return "LYNQ_REQUEST_LIST_SMS_FROM_MEMORY";
case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL:return "SET_DEFAULT_SIM_ALL";
+ case LYNQ_REQUEST_GET_DEFAULT_SIM_ALL:return "GET_DEFAULT_SIM_ALL";
+ case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL_EXCEPT_DATA:return "SET_DEFAULT_SIM_ALL_EXCEPT_DATA";
case LYNQ_REQUEST_CHANGE_SCREEN_STATE:return "LYNQ_REQUEST_CHANGE_SCREEN_STATE";/*jb.qi add for two sim sleep 2022/9/19*/
case LYNQ_REQUEST_CHANGE_RADIO:return "LYNQ_REQUEST_CHANGE_RADIO";/*lei add for factory test of sleep 2022/9/19*/
case LYNQ_REQUEST_SET_VOICE_AUDIO_MODE:return "LYNQ_REQUEST_SET_VOICE_AUDIO_MODE";
@@ -5584,6 +5590,8 @@
case LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY: return "LYNQ_REQUEST_DELETE_SMS_FROM_MEMORY";
case LYNQ_REQUEST_LIST_SMS_FROM_MEMORY: return "LYNQ_REQUEST_LIST_SMS_FROM_MEMORY";
case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL:return "SET_DEFAULT_SIM_ALL";
+ case LYNQ_REQUEST_GET_DEFAULT_SIM_ALL:return "GET_DEFAULT_SIM_ALL";
+ case LYNQ_REQUEST_SET_DEFAULT_SIM_ALL_EXCEPT_DATA:return "SET_DEFAULT_SIM_ALL_EXCEPT_DATA";
case LYNQ_REQUEST_CHANGE_SCREEN_STATE:return "LYNQ_REQUEST_CHANGE_SCREEN_STATE";/*jb.qi add for two sim sleep 2022/9/19*/
case LYNQ_REQUEST_CHANGE_RADIO:return "LYNQ_REQUEST_CHANGE_RADIO";/*lei add for factory test of sleep 2022/9/19*/
case RIL_UNSOL_TELEPHONY_RESTART:return "RIL_UNSOL_TELEPHONY_RESTART";/*xy.he add for t800 ril service 2023/10/23*/
@@ -6199,6 +6207,9 @@
while(recvfrom(server_socket_fd, buffer, LYNQ_SOCKET_BUFFER,0,(struct sockaddr*)&lynqClient_addr, &client_addr_length) != -1)//add while by hq for bug 760 2023/02/09
{
client_tmp = (lynq_client_t*)buffer;
+ #ifdef MODE_DSDS
+ lynq_client_addr = lynqClient_addr;
+ #endif
ril_slot_status = (int)(buffer+(1024*8+sizeof(int)*3))[0] - '0';
ril_slot = (int)(buffer+(1024*8+sizeof(int)*3)+1)[0] - '0';
RLOGD("[LYNQ socketId] utoken=%d,request=%d,slot_status=%d,slot=%d,len=%d,param=%s",client_tmp->uToken,client_tmp->request,ril_slot_status,ril_slot,client_tmp->paramLen,client_tmp->param);
@@ -7519,6 +7530,21 @@
return len_s;
}
+#ifdef MODE_DSDS
+int lynq_emResultNotify(Parcel &p)
+{
+
+ RLOGD("emResultNotify parcel");
+ int dataSize = p.dataSize();
+ const uint8_t* data = p.data();
+ int len_s = sendto(server_socket_fd,data,dataSize,0,(struct sockaddr *)&lynq_client_addr,sizeof(lynq_client_addr));
+ //sendto(server_socket_fd,"stopemdone",strlen("stopemdone"),0,(struct sockaddr *)&client_addr,sizeof(client_addr));
+ RLOGD("len_s = %d,errno = %d",len_s,errno);
+ return len_s;
+}
+#endif
+
+
void processUnsolicited (Parcel &p, int type)
{
int32_t response = -1;
diff --git a/common_src/framework/lynq-ril-service/src/sim.cpp b/common_src/framework/lynq-ril-service/src/sim.cpp
index f1bba40..d6023be 100755
--- a/common_src/framework/lynq-ril-service/src/sim.cpp
+++ b/common_src/framework/lynq-ril-service/src/sim.cpp
@@ -42,6 +42,8 @@
#include "sim.h"
#include "common.h"
#include "Radio_capability_switch_util.h"
+#include "lynq_interface.h"
+
#undef LOG_TAG
#define LOG_TAG "DEMO_SIM"
@@ -216,7 +218,20 @@
str = "default SIM(except data): " + std::to_string(get_default_sim_all_except_data()) + "\n";
str = str + "default data: " + std::to_string(get_default_sim_data()) + "\n";
str = str + "main capability SIM: " + std::to_string(Radio_capability_switch_util::get_main_capability_phone_id()) + "\n";
+#ifdef MODE_DSDS
+ android::Parcel p;
+ p.writeInt32(1);//response_type
+ p.writeInt32(0);//token
+ p.writeInt32(LYNQ_REQUEST_GET_DEFAULT_SIM_ALL);//request_id
+ p.writeInt32(slot_id);//slot_id
+ p.writeInt32(0);//error_code
+ p.writeInt32((get_default_sim_data()*2) + (get_default_sim_all_except_data()));//data
+ p.setDataPosition(0);
+ android::lynq_emResultNotify(p);
+#else
android::emResultNotify(str.c_str());
+#endif
+
free(pRI);
return 0;
}
@@ -326,16 +341,36 @@
//SET_DEFAULT_SIM_ALL_EXCEPT_DATA
int set_default_sim_all_except_data(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI){
+
+#ifdef MODE_DSDS
+ android::Parcel p;
+ p.writeInt32(1);//res_type
+ p.writeInt32(0);//token
+ p.writeInt32(LYNQ_REQUEST_SET_DEFAULT_SIM_ALL_EXCEPT_DATA);//request_id
+ p.writeInt32(get_default_sim_data());
+#endif
if((argc != 2) || (!is_valid(atoi(argv[1]))))
{
free(pRI);
RLOGD("the paremeters numbers isn't right , so return");
+ #ifdef MODE_DSDS
+ p.writeInt32(1);//err_code
+ p.setDataPosition(0);
+ android::lynq_emResultNotify(p);
+ #else
android::emResultNotify("Set failed.\n");
+ #endif
+
return -1;
}
-
set_default_sim_all_except_data(atoi(argv[1]));
+#ifdef MODE_DSDS
+ p.writeInt32(0);//err_code when failed
+ p.setDataPosition(0);
+ android::lynq_emResultNotify(p);
+#else
android::emResultNotify("Set successful.\n");
+#endif
free(pRI);
return 0;
}
diff --git a/common_src/lib/liblynq-sim/include/lynq_sim.h b/common_src/lib/liblynq-sim/include/lynq_sim.h
index ac00626..59521b9 100755
--- a/common_src/lib/liblynq-sim/include/lynq_sim.h
+++ b/common_src/lib/liblynq-sim/include/lynq_sim.h
@@ -93,6 +93,33 @@
*/
int lynq_set_default_sim(const int slot);
+#ifdef MODE_DSDS
+/**
+ * @brief get default sim card
+ * @param bitslot: sim card infomation
+ * 00(0)all in sim0
+ * 01(1)others sim0,data in sim1
+ * 10(2)others sim1,data in sim0
+ * 11(3)all in sim1
+ * @return int
+ * 0:success
+ * other:fail
+ */
+
+int lynq_get_default_sim_all(int *bit_slot);
+
+/**
+ * @brief set sim card except_data
+ * @param slot: type [IN] <slot> sim card slot
+ * @return int
+ * 0:success
+ * other:fail
+ */
+
+int lynq_set_default_sim_except_data(const int slot);
+
+#endif
+
#ifdef __cplusplus
}
diff --git a/common_src/lib/liblynq-sim/src/lynq_sim.cpp b/common_src/lib/liblynq-sim/src/lynq_sim.cpp
index cbc8459..97a9292 100755
--- a/common_src/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/common_src/lib/liblynq-sim/src/lynq_sim.cpp
@@ -187,9 +187,24 @@
recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN, 0, (struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
if(recv_num <= 0)
{
+ #ifdef MODE_DSDS
+ if (errno == EAGAIN || errno == EWOULDBLOCK)
+ {
+ RLOGD("recv from timeout");
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ return LYNQ_E_TIME_OUT;
+ }
+ else
+ {
+ RLOGD("recv request fail, recv num is %d", recv_num);
+ pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+ return recv_num;
+ }
+ #else
RLOGD("recv request fail, recv num is %d", recv_num);
pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
return recv_num;
+ #endif
}
p->setData((uint8_t *)res_data,sizeof(char)*recv_num);
p->setDataPosition(0);
@@ -279,7 +294,7 @@
return -1;
}
-#ifdef DMODE_DSDS
+ #ifdef MODE_DSDS
lynq_close_all_urc_socket_thread();
#endif
g_lynq_sim_init_flag = 0;
@@ -684,6 +699,69 @@
LYERRLOG("sim allow data value %d",s_sim_allow_data_value);
return s_sim_allow_data_value;
}
+
+
+int lynq_set_default_sim_except_data(const int slot)
+{
+ RLOGD("Enter %s",__FUNCTION__);
+
+ if(g_lynq_sim_init_flag == 0)
+ {
+ return -1;
+ }
+
+ RLOGD("Slot is %d",slot);
+
+ if(!judge(slot))
+ {
+ RLOGD("is not 0 or 1");
+ return -1;
+ }
+
+ int send_num = 0;
+ Parcel p;
+ RLOGD(
+"send LYNQ_REQUEST_SET_DEFAULT_SIM_ALL_EXCEPT_DATA");
+ int res = lynq_send_common_request(&p,LYNQ_REQUEST_SET_DEFAULT_SIM_ALL_EXCEPT_DATA,1,1,"%d",slot);
+ if(res != 0)
+ {
+ RLOGD("function %s execute error", __FUNCTION__);
+ return res;
+ }
+
+ return 0;
+}
+
+
+
+int lynq_get_default_sim_all(int *bit_slot)
+{
+ RLOGD("Enter %s",__FUNCTION__);
+
+ int sim_except_data = 0;
+ int sim_data = 0;
+
+ if(g_lynq_sim_init_flag == 0)
+ {
+ return -1;
+ }
+
+ int send_num = 0;
+ Parcel p;
+
+ RLOGD(
+"send LYNQ_REQUEST_GET_DEFAULT_SIM_ALL");
+ int res = lynq_send_common_request(&p,LYNQ_REQUEST_GET_DEFAULT_SIM_ALL,0,1,"");
+ if(res != 0)
+ {
+ RLOGD("function %s execute error", __FUNCTION__);
+ return res;
+ }
+
+ p.readInt32(bit_slot);
+ return 0;
+}
+
#endif
int lynq_switch_card(int slot){
diff --git a/common_src/lib/liblynq-sim/lynq_sim_urc.cpp b/common_src/lib/liblynq-sim/src/lynq_sim_urc.cpp
similarity index 100%
rename from common_src/lib/liblynq-sim/lynq_sim_urc.cpp
rename to common_src/lib/liblynq-sim/src/lynq_sim_urc.cpp
diff --git a/common_src/lib/liblynq-sim/lynq_sim_urc.h b/common_src/lib/liblynq-sim/src/lynq_sim_urc.h
similarity index 100%
rename from common_src/lib/liblynq-sim/lynq_sim_urc.h
rename to common_src/lib/liblynq-sim/src/lynq_sim_urc.h