[Feature][L805-15] RIL FWK update for DSDS

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

Change-Id: Ica4204d89e843274d04e5809ed25e81b66e2e35a
diff --git a/common_src/framework/lynq-ril-service/src/common.cpp b/common_src/framework/lynq-ril-service/src/common.cpp
index b87b051..26cdce0 100755
--- a/common_src/framework/lynq-ril-service/src/common.cpp
+++ b/common_src/framework/lynq-ril-service/src/common.cpp
@@ -39,6 +39,7 @@
 #include "cc.h"
 #include "include/lynq_systime.h"
 #include <include/lynq_uci.h>
+#include "lynq_interface.h"
 #ifdef LED_SUPPORT
 #include "led.h"
 #endif
@@ -422,6 +423,15 @@
             Radio_capability_switch_util::sendRadioCapabilityRequest(slot);
         }
     }
+    else
+    {
+        android::Parcel allow_data_p;
+        allow_data_p.writeInt32 (1);
+        allow_data_p.writeInt32 (LYNQ_URC_ALLOW_DATA);
+        allow_data_p.writeInt32 (slot);
+        allow_data_p.writeInt32 (RIL_E_GENERIC_FAILURE);
+        android::LYNQ_RIL_urcBroadcast(allow_data_p,LYNQ_URC_ALLOW_DATA);
+    }
     pthread_mutex_unlock(&s_DataMutex);
 }
 
diff --git a/common_src/framework/lynq-ril-service/src/common.h b/common_src/framework/lynq-ril-service/src/common.h
index 959d4ab..46da418 100755
--- a/common_src/framework/lynq-ril-service/src/common.h
+++ b/common_src/framework/lynq-ril-service/src/common.h
@@ -91,25 +91,6 @@
 **The range of error values unique to LYNQ is 8000 to 10000.
 **The sim card state is error.
 */
-typedef enum{
-    LYNQ_E_CARDSTATE_ERROR=8000,
-    /* The voice service state is out of service*/
-    LYNQ_E_STATE_OUT_OF_SERVICE=8001,
-    /* The voice service state is EMERGENCY_ONLY*/
-    LYNQ_E_STATE_EMERGENCY_ONLY=8002,
-    /* The radio power is power off*/
-    LYNQ_E_STATE_POWER_OFF=8003,
-    LYNQ_E_TIME_OUT=8004,
-    /*create or open sms DB fail */
-    LYNQ_E_SMS_DB_FAIL=8005,
-    /*Failed to execute sql statement*/
-    LYNQ_E_SMS_SQL_FAIL = 8006,
-    LYNQ_E_SMS_NOT_FIND = 8007,
-    /* The logic conflict*/
-    LYNQ_E_CONFLICT=9000,
-    /*Null anomaly*/
-    LYNQ_E_NULL_ANONALY=9001
-}LYNQ_E;
 /*Warren add for t800 RIL Service 2021/12/10 start*/
 
 typedef struct{
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 401b9bd..963e306 100755
--- a/common_src/framework/lynq-ril-service/src/lynq_interface.h
+++ b/common_src/framework/lynq-ril-service/src/lynq_interface.h
@@ -13,6 +13,7 @@
 #define LYNQ_URC_MODIFY_APNDB (LYNQ_URC_VENDOR_BASE+4)
 #define LYNQ_URC_RESET_APNDB (LYNQ_URC_VENDOR_BASE+5)
 
+#define LYNQ_URC_ALLOW_DATA (LYNQ_URC_VENDOR_BASE + 10)
 
 #define LYNQ_REQUEST_WRITE_SMS_TO_MEMORY (LYNQ_REQUEST_VENDOR_BASE +4)
 #define LYNQ_REQUEST_READ_SMS_FROM_MEMORY (LYNQ_REQUEST_VENDOR_BASE + 5)
@@ -49,6 +50,44 @@
 #define RIL_UNSOL_ECALL_AUTO_ANS_TIMER_OUT 9005
 #define RIL_UNSOL_ECALL_AUTO_ANS_IMS_TIMER_OUT 9006
 #endif
+//Warren add for plantform 2024_04_11 start
+/* 
+**The range of error values unique to LYNQ is 7000 to 10000.
+**The sim card state is error.
+*/
+typedef enum{
+    /*base abnormal*/
+    LYNQ_E_PARAMETER_ANONALY=7000,
+    LYNQ_E_SEND_REQUEST_FAIL=7001,
+    LYNQ_E_GET_HEAD_ERROR=7002,
+    LYNQ_E_INNER_ERROR=7100,
+    LYNQ_E_MALLOC_ERROR=7101,
+    /**/
+    LYNQ_E_CARDSTATE_ERROR=8000,
+    /* The voice service state is out of service*/
+    LYNQ_E_STATE_OUT_OF_SERVICE=8001,
+    /* The voice service state is EMERGENCY_ONLY*/
+    LYNQ_E_STATE_EMERGENCY_ONLY=8002,
+    /* The radio power is power off*/
+    LYNQ_E_STATE_POWER_OFF=8003,
+    LYNQ_E_TIME_OUT=8004,
+    /*create or open sms DB fail */
+    LYNQ_E_SMS_DB_FAIL=8005,
+    /*Failed to execute sql statement*/
+    LYNQ_E_SMS_SQL_FAIL = 8006,
+    LYNQ_E_SMS_NOT_FIND = 8007,
+    /* The logic conflict*/
+    LYNQ_E_CONFLICT=9000,
+    /*Null anomaly*/
+    LYNQ_E_NULL_ANONALY=9001,
+    /*Invalid id anomaly*/
+    LYNQ_E_INVALID_ID_ANONALY=9002,
+#ifdef ECALL_SUPPORT
+    LYNQ_E_ECALL_BEING_RUNNING =9003,
+    LYNQ_E_ECALL_MSD_LENGTH_ERROR =9004,
+    LYNQ_E_ECALL_DAILING_NO_ANSWER =9005,
+#endif
+}LYNQ_E;
 
 typedef struct{
     int request;
diff --git a/common_src/framework/lynq-ril-service/src/ril.cpp b/common_src/framework/lynq-ril-service/src/ril.cpp
index 1c0a080..a5f9a15 100755
--- a/common_src/framework/lynq-ril-service/src/ril.cpp
+++ b/common_src/framework/lynq-ril-service/src/ril.cpp
@@ -4518,6 +4518,15 @@
                 sleep(WAIT_TIME_FOR_SIM_SWITCH);
                 setupDataCall(0, NULL, (RIL_SOCKET_ID)0, NULL);
             }
+            if(utils::is_support_dsds() && get_default_sim_data() == socket_id)
+            {
+                Parcel allow_data_p;
+                allow_data_p.writeInt32 (1);
+                allow_data_p.writeInt32 (LYNQ_URC_ALLOW_DATA);
+                allow_data_p.writeInt32 (socket_id);
+                allow_data_p.writeInt32 (e);
+                LYNQ_RIL_urcBroadcast(allow_data_p,LYNQ_URC_ALLOW_DATA);
+            }
             break;
         }
 #ifdef KEEP_ALIVE
@@ -6112,6 +6121,8 @@
     RLOGD("LYNQ_RIL_RecSocket start\n");
     char *argv[MAX_ARGS];
     int argc = 0;
+    int ril_slot_status = 0;
+    int ril_slot = 0;
     int ep_fd = 0;
     int en_fd = 0;
     struct epoll_event lynq_ev;
@@ -6188,10 +6199,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;
-                    RLOGD("[LYNQ socketId] utoken=%d,request=%d,len=%d,param=%s",client_tmp->uToken,client_tmp->request,client_tmp->paramLen,client_tmp->param);
-                    //char test[36] = {};
-                    //sprintf(test,"test okay len = %d",client_tmp->paramLen);
-                    //sendto(server_socket_fd,test,strlen(test),0,(struct sockaddr*)&client_addr,client_addr_length);
+                    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);
                     argv[0] = (char *)lynq_requset_to_string(client_tmp->request);
                     argc = 0;
                     if(client_tmp->paramLen > 0)
@@ -6218,10 +6228,17 @@
                     int32_t request;
                     request = command->request;
                     RIL_SOCKET_ID id = RIL_SOCKET_1;
-                    if(utils::is_support_dsds()) {
-                        id = (RIL_SOCKET_ID)get_default_sim_all_except_data();
-                    } else if(utils::is_suppport_dsss()) {
-                        id = (RIL_SOCKET_ID)Phone_utils::get_enable_sim_for_dsss();
+                    if((ril_slot_status == 1) && ((ril_slot == 0) | (ril_slot == 1)))
+                    {
+                        id = (RIL_SOCKET_ID)ril_slot;
+                    }
+                    else
+                    {
+                        if(utils::is_support_dsds()) {
+                            id = (RIL_SOCKET_ID)get_default_sim_all_except_data();
+                        } else if(utils::is_suppport_dsss()) {
+                            id = (RIL_SOCKET_ID)Phone_utils::get_enable_sim_for_dsss();
+                        }
                     }
                     if(request == -1)
                     {
diff --git a/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h b/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h
index 0a1ebd0..a92c350 100755
--- a/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h
+++ b/common_src/framework/lynq-ril-service/src/rtp/call_rtp_inner.h
@@ -24,7 +24,6 @@
 

 #define RESULT_OK (0)

 #define RESULT_ERROR (-1)

-#define LYNQ_E_PARAMETER_ANONALY 7000

 

 typedef enum{

     Rtp_Ssrc_random = 0,     

diff --git a/common_src/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp b/common_src/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp
index 0d926df..14bd941 100755
--- a/common_src/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp
+++ b/common_src/framework/lynq-ril-service/src/sms/lynqSmsManager/lynq_sms_manager.cpp
@@ -6,6 +6,7 @@
 #include <stdlib.h>

 #include <string.h>

 #include "common.h"

+#include "lynq_interface.h"

 sms_manager * g_smsManagement;

 int sms_indexs[LYNQ_MAX_SMS_LIST]={0};

 int next_index = 0;