[Feature][TAT-22][AT]AT+LCSUS

Change-Id: I494c9e8a043dc96ac9ea3620f59d503180f627ad
diff --git a/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp b/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp
index f8fb405..f01c341 100755
--- a/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp
+++ b/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp
@@ -17,16 +17,20 @@
 #include "atci_lynq_data_cmd.h"
 #include "atci_common.h"
 #include "lynq_common.h"
+#include "common.h"
+#include "sim.h"
 
 #undef LOG_TAG
 #define LOG_TAG "DEMO_ATCI_DATA"
 #define LINE __LINE__
 #define FUNC __FUNCTION__
+#define SET_DEFAULT_SIM_ALL -1
 atci_cmd_type_t atci_data_cmd_table[] = {
 //cmd_name      target_type        handler
     { "AT+LAPNACT", TARGET_TELEPHONY, atci_data_enable_pdp_hdlr },            //AT command to enable defult PDP
     { "AT+ELAPNACT", TARGET_TELEPHONY, atci_data_enable_pdp_with_apn_hdlr },  //AT command to enable PDP with APN
     { "AT+LEAPNMOD", TARGET_TELEPHONY, atci_data_modify_apn_hdlr },           //AT command to modify APN
+    { "AT+LCSUS", TARGET_TELEPHONY, atci_switch_card_halr },
     { NULL, TARGET_UNKNOWN, NULL }
 };
 int atci_lynq_data_init(void *arg) {
@@ -35,6 +39,103 @@
     return ret;
 }
 
+int atci_switch_card_halr(char *cmd, int op_mode, int target, char *response)
+{
+    char buf[16];
+    switch (op_mode)
+    {
+        case AT_SET_MODE:
+        {
+            //paser parameter
+            //send to target handle
+            //ex: at+lapnact=int
+            RLOGD("input cmd[%s]", cmd);
+            if (SYS_FAIL == atci_at_to_equal(&cmd))
+            {
+                //input error
+                ATCIResponseNoToken(100,NULL,SET_DEFAULT_SIM_ALL);
+                return SYS_FAIL;
+            }
+            RLOGD("[%d][%s] data is[%s]",LINE,FUNC,cmd);
+            int state;
+            if (SYS_FAIL == atci_at_get_nexthexint(&cmd, &state))
+            {
+                ATCIResponseNoToken(100,NULL,SET_DEFAULT_SIM_ALL);
+                return SYS_FAIL;
+            }
+            RLOGD("state value is %d", state);
+            if(state==1)
+            {
+                char* argv[2] = { 0 };
+                argv[0] = "SET_DEFAULT_SIM_ALL";
+                //sprintf(argv[1], "%d", state);
+                argv[1] = "1";
+                
+                int argc = 2;
+                android::lynqSendToRil(2,argv,1024);
+                RLOGD("%s g_switch_card_error %d %d", __FUNCTION__, g_switch_card_error, __LINE__);
+                if(!g_switch_card_error)
+                {
+                    ATCIResponseNoToken(0,NULL,-1);
+                }
+                else
+                {
+                    ATCIResponseNoToken(g_switch_card_error,NULL,-1);
+                }
+                
+            }
+            else if(state == 0)
+            {
+                char* argv[2] = { 0 };
+                argv[0] = "SET_DEFAULT_SIM_ALL";
+                //sprintf(argv[1], "%d", state);
+                argv[1] = "0";
+                
+                int argc = 2;
+                android::lynqSendToRil(2,argv,1024);
+                RLOGD("%s g_switch_card_error %d %d", __FUNCTION__, g_switch_card_error, __LINE__);
+                if(!g_switch_card_error)
+                {
+                    ATCIResponseNoToken(0,NULL,-1);
+                }
+                else
+                {
+                    ATCIResponseNoToken(g_switch_card_error,NULL,-1);
+                }
+            }
+            else
+            {
+                
+                ATCIResponseNoToken(100,NULL,SET_DEFAULT_SIM_ALL);
+                return SYS_FAIL;
+            }
+            break;
+        }
+        case AT_TEST_MODE:
+        {
+            memset(buf,0,sizeof(buf));
+            sprintf(buf,"%s","+LCSUS: (0,1)");
+            ATCIResponseNoToken(0,buf,SET_DEFAULT_SIM_ALL);
+            break;
+        }
+        case AT_READ_MODE:
+        {
+            
+            int id = get_default_sim_all();
+            memset(buf,0,sizeof(buf));
+            sprintf(buf,"+LCSUS: %d", id);
+            ATCIResponseNoToken(0,buf,SET_DEFAULT_SIM_ALL);
+            break;
+        }
+        default:
+        {
+            RLOGD("set mute error");
+            break;
+        }
+    }
+    return SYS_SUCC;
+}
+
 int atci_data_enable_pdp_hdlr(char *cmd, int op_mode, int target, char *response)
 {
     int ret;
diff --git a/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.h b/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.h
index a078978..61ecb08 100755
--- a/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.h
+++ b/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.h
@@ -15,6 +15,6 @@
 int atci_data_enable_pdp_hdlr(char *cmd, int op_type, int target, char *response);
 int atci_data_enable_pdp_with_apn_hdlr(char *cmd, int op_mode, int target, char *response);
 int atci_data_modify_apn_hdlr(char *cmd, int op_mode, int target, char *response);
-
+int atci_switch_card_halr(char *cmd, int op_mode, int target, char *response);
 #endif
 
diff --git a/framework/lynq-ril-service/src/ril.cpp b/framework/lynq-ril-service/src/ril.cpp
index a7105b6..8110f5b 100755
--- a/framework/lynq-ril-service/src/ril.cpp
+++ b/framework/lynq-ril-service/src/ril.cpp
@@ -3998,6 +3998,38 @@
     }
 }
 
+static void lynq_sdk_ready(Parcel &p)
+{
+    int resp_type;
+    int token;
+    int request;
+    int slot_id;
+    int error1;
+    int num;
+    char imei[32] = {0};
+    if(sdk_ready == true)
+    {
+        p.setDataPosition(0);
+        if(p.dataAvail() > 0)
+        {
+            p.readInt32(&resp_type);
+            p.readInt32(&token);
+            p.readInt32(&request);
+            p.readInt32(&slot_id);
+            p.readInt32(&error1);
+            if(!error1)
+            {
+                system("uci set lynq_uci.sdk_ready=0");
+            }
+            else
+            {
+                system("uci set lynq_uci.sdk_ready=2");
+            }
+        }
+        sdk_ready = false;
+    }
+}
+
 extern "C" void
 RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen) {
     RequestInfo *pRI;
@@ -4232,40 +4264,14 @@
                /*lei add for sdk ready 2022/8/17*/
                 case RIL_REQUEST_DEVICE_IDENTITY:
                 {
-                    int resp_type;
-                    int token;
-                    int request;
-                    int slot_id;
-                    int error1;
-                    int num;
-                    char imei[32] = {0};
-                    if(sdk_ready == true)
-                    {
-                        p.setDataPosition(0);
-                        if(p.dataAvail() > 0)
-                        {
-                            p.readInt32(&resp_type);
-                            p.readInt32(&token);
-                            p.readInt32(&request);
-                            p.readInt32(&slot_id);
-                            p.readInt32(&error1);
-                            if(!error1)
-                            {
-                               system("uci set lynq_uci.sdk_ready=0");
-                            }
-                            else
-                            {
-                                system("uci set lynq_uci.sdk_ready=2");
-                            }
-                        }
-                        sdk_ready = false;
-                    }
+                    lynq_sdk_ready(p);
                     break;
                 }
                 /*lei add for sdk ready 2022/8/17*/
                 case RIL_REQUEST_OPERATOR:
                 {
                     lynq_get_mccmnc(p, mccmnc);
+                    break;
                 }
                default:
                    break;
@@ -6264,7 +6270,6 @@
         } else if(utils::is_suppport_dsss()) {
             id = (RIL_SOCKET_ID)Phone_utils::get_enable_sim_for_dsss();
         }
-
         if(request == -1)
         {
             (*(command->func)) (argc, argv, id, NULL);
@@ -6955,6 +6960,7 @@
         }
     }
     /*lei modify for Some requests that are not in the ril_commands.h and mtk_ril_commands.h but in commands.h*/
+
     if(utils::is_suppport_dsss()){
         pRI->socket_id = (RIL_SOCKET_ID)Phone_utils::get_enable_sim_for_dsss();
     }
@@ -6962,7 +6968,6 @@
     if(utils::is_support_dsds() && (request != RIL_REQUEST_RADIO_POWER)){
         pRI->socket_id = (RIL_SOCKET_ID)get_atci_sim();
     }
-
     pRI->p_next = NULL;
 
     
diff --git a/framework/lynq-ril-service/src/sim.cpp b/framework/lynq-ril-service/src/sim.cpp
index d77ab19..f1bba40 100755
--- a/framework/lynq-ril-service/src/sim.cpp
+++ b/framework/lynq-ril-service/src/sim.cpp
@@ -46,6 +46,8 @@
 #undef LOG_TAG
 #define LOG_TAG "DEMO_SIM"
 
+int g_switch_card_error = 0;
+
 static char* checkParameters(char* para){
     if (strcasecmp(para, "null") == 0) {
         return "";
@@ -182,19 +184,25 @@
         free(pRI);
         RLOGD("the paremeters numbers isn't right , so return");
         android::emResultNotify("Set failed.\n");
-        lynq_output_info("\nCME ERROR:2\n");
+        //lei modify: elt port is no longer used
+        //lynq_output_info("\nCME ERROR:2\n");
+        g_switch_card_error = 2;
         return -1;
     }
 
     if(Radio_capability_switch_util::is_sim_inserted(atoi(argv[1]))) {
         set_default_sim_all(atoi(argv[1]));
         android::emResultNotify("Set successful.\n");
-        lynq_output_info("\nOK\n");
+        //lei modify: elt port is no longer used
+        //lynq_output_info("\nOK\n");
+        g_switch_card_error = 0;
         free(pRI);
     } else {
         RLOGD("Set default all fail, SIM card absent");
         android::emResultNotify("Set default all fail, SIM card absent.\n");
-        lynq_output_info("\nCME ERROR:11\n");
+        //lei modify: elt port is no longer used
+        //lynq_output_info("\nCME ERROR:11\n");
+        g_switch_card_error = 11;
         free(pRI);
     }
 
diff --git a/framework/lynq-ril-service/src/sim.h b/framework/lynq-ril-service/src/sim.h
index fe1863c..54d2564 100755
--- a/framework/lynq-ril-service/src/sim.h
+++ b/framework/lynq-ril-service/src/sim.h
@@ -38,6 +38,8 @@
 #include <vendor-ril/telephony/ril.h>
 #include  "common.h"
 
+extern int g_switch_card_error;
+
 int getIccCardStatus(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
 int supplyIccPinForApp(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
 int changeIccPinForApp(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);