[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);