[feature][SZZT-69][AT]At + LCSUS switching card commands support query
[feature][SZZT-65][AT]Low power instruction for dual cards
Change-Id: Ia4d40a5620d5fdff1a34350a397e6d828ff359ef
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_commands.h b/src/lynq/framework/lynq-atsvc/src/lynq_commands.h
index d232c31..ae1d99e 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_commands.h
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_commands.h
@@ -12,7 +12,7 @@
{LYNQ_REQUEST_ELAPNACT,"RIL_REQUEST_SETUP_DATA_CALL","ELAPNACT",setupData_e,NULL},
{LYNQ_USER_REQUEST_GNSS,NULL,"LYNQGNSS",NULL,lynqGnss},
{LYNQ_USER_REQUEST_OTHRE,NULL,"LYNQOTHER",NULL,lynqOther},
-{LYNQ_REQUEST_SWITCH_SIM,"SET_DEFAULT_SIM_ALL","LCSUS",switchSim,NULL},
+{LYNQ_REQUEST_SWITCH_SIM,"SET_DEFAULT_SIM_ALL","LCSUS",lynq_dsds_support,NULL},
{LYNQ_REQUEST_SCREEN_STATE,"RIL_REQUEST_SCREEN_STATE","SCREEN",lynq_screen,NULL},
{LYNQ_PLAT_LGMDS,"LYNQ_PLAT_LGMDS","LGMDS",NULL,getMDstate},
{LYNQ_REQUEST_RST,"LYNQ_REQUEST_RST","RST",NULL,rst},
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
index 5115d7c..91e38f9 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
@@ -18,6 +18,7 @@
#define USB_BUF_SIZE 8192
#include <liblog/lynq_deflog.h>
#include <sys/time.h>
+#include "utils.h"
#include "Phone_utils.h"
usb_cmd_t Usb_commands[] = {
#include "lynq_commands.h"
@@ -497,20 +498,58 @@
}
return 0;
}
-int switchSim(int argc,char*argv[],char *rilReq, int uToken)
+
+static void lynq_get_current_card(void)
+{
+ int id = get_default_sim_all();
+ lynq_output_info("+LCSUS: %d\n", id);
+ lynq_output_info("OK\n");
+ return;
+}
+
+static void lynq_switch_card(char*argv[], char *rilReq, int uToken)
{
int slot = 0;
int ret = -1;
char *new_argv[10] = {};
+ slot = atoi(argv[3]);
+ new_argv[0] = (char *)rilReq;
+ new_argv[1] = argv[3];
+ android::lynqSendToRil(2,new_argv,uToken);
+ return;
+}
+
+static void lynq_display_dsds_mode(void)
+{
+ lynq_output_info("+LCSUS: (0-1)\n");
+ lynq_output_info("OK\n");
+ return;
+}
+
+
+int lynq_dsds_support(int argc,char*argv[],char *rilReq, int uToken)
+{
if(argc < 4)
{
RLOGD("parameter error!!!");
return 1;
}
- slot = atoi(argv[3]);
- new_argv[0] = (char *)rilReq;
- new_argv[1] = argv[3];
- android::lynqSendToRil(2,new_argv,uToken);
+ int type = atoi(argv[2]);
+ if(type == 2)//get mode
+ {
+ RLOGD("lynq_dsds_support get mode\n");
+ lynq_get_current_card();
+ }
+ else if(type == 0)//set mode
+ {
+ RLOGD("lynq_dsds_support set mode\n");
+ lynq_switch_card(argv, rilReq, uToken);
+ }
+ else if(type == 1)//get list mode
+ {
+ RLOGD("lynq_dsds_support get list mode\n");
+ lynq_display_dsds_mode();
+ }
return 0;
}
@@ -525,7 +564,7 @@
}
while(fgets(buf, 4072, fp) != NULL){}
pclose(fp);
- return 0;
+ return NULL;
}
int lynq_screen(int argc,char*argv[],char *rilReq, int uToken){
@@ -647,6 +686,31 @@
}
}
+void lynq_switch_card(char *card)
+{
+ char *sim_argv[3] = {};
+ sim_argv[0] = "SET_DEFAULT_SIM_ALL";
+ sim_argv[1] = card;
+ sim_argv[2] = "sleep";
+ android::lynqSendToRil(2,sim_argv,8888);
+ sleep(1);
+ return;
+}
+
+/*
+/**
+ * @brief Switch the card and shut down the modem
+ *
+ * @param card 0 or 1
+ */
+void lynq_shutdown_modem(void)
+{
+ char *new_argv[2] = {};
+ new_argv[0] = "RIL_REQUEST_SCREEN_STATE";
+ new_argv[1] = "0";
+ android::lynqSendToRil(2,new_argv,77777);
+ return;
+}
/**
* @brief auto_suspend
@@ -683,25 +747,16 @@
system("echo 0 > /dev/wmtWifi");
system("echo 7 9 0 > /proc/driver/wmt_dbg");
/*If have two cards*/
- char *new_argv[2] = {};
- new_argv[0] = "RIL_REQUEST_SCREEN_STATE";
- new_argv[1] = "0";
- /*sim2*/
- char *sim2_argv[2] = {};
- sim2_argv[0] = "SET_DEFAULT_SIM_ALL";
- sim2_argv[1] = "1";
- android::lynqSendToRil(2,sim2_argv,666);
- sleep(2);
-
- android::lynqSendToRil(2,new_argv,666);
- sleep(2);
- /*sim1*/
- char *sim1_argv[2] = {};
- sim1_argv[0] = "SET_DEFAULT_SIM_ALL";
- sim1_argv[1] = "0";
- android::lynqSendToRil(2,sim1_argv,666);
- sleep(2);
- android::lynqSendToRil(2,new_argv,666);
+ /*Query the current card*/
+ int id = get_default_sim_all();
+ lynq_switch_card("1");
+ lynq_shutdown_modem();
+ lynq_switch_card("0");
+ lynq_shutdown_modem();
+ if(id == RIL_SOCKET_2)
+ {
+ lynq_switch_card("1");
+ }
/*If have two cards*/
if(!strcmp(argv,"1"))
{
@@ -896,6 +951,7 @@
#endif
RLOGD("g_lynq_csclk = 0, entry sleep mode, dont't check dtr pin level\n");
auto_suspend(argv[3]);
+ syncRespToUsb(0);
return;
}
/*DTR pin*/
@@ -912,6 +968,7 @@
system("echo out 62 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
#endif
auto_suspend(argv[3]);
+ syncRespToUsb(0);
return;
}
else
@@ -920,34 +977,6 @@
return;
}
}
- #if 0
- /*WAKEUP_IN pin*/
- else if(g_lynq_csclk == 2)
- {
- if(g_lynq_wakeup_in == 0)
- {
- /*don't check WAKEUP_IN level*/
- auto_suspend(argv[3]);
- /*if module entry sleep mode, need to pull ring pin high level*/
- system("echo out 4 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- }
- /*check WAKEUP_IN level*/
- else if (g_lynq_wakeup_in == 1)
- {
- if(cat_pin_level("xxx"))
- {
- auto_suspend(argv[3]);
- /*if module entry sleep mode, need to pull ring pin high level*/
- system("echo out 4 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- }
- else
- {
- syncRespToUsb(10);//WAKEUP_IN pin is low level, so can't entry sleep mode
- return;
- }
- }
- }
- #endif
}
/*invalid value*/
else
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.h b/src/lynq/framework/lynq-atsvc/src/lynq_common.h
index b20456d..7bc9be1 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.h
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.h
@@ -128,7 +128,7 @@
int dialACall(int argc,char*argv[],char *rilReq, int uToken);
int setupData(int argc,char*argv[],char *rilReq, int uToken);
int setupData_e(int argc,char*argv[],char *rilReq, int uToken);
-int switchSim(int argc,char*argv[],char *rilReq, int uToken);
+int lynq_dsds_support(int argc,char*argv[],char *rilReq, int uToken);
int lynq_screen(int argc,char*argv[],char *rilReq, int uToken);
void* getMDstate(int argc,char*argv[],int uToken);
int lynqATWaitWithTime(int time);//time(s)
diff --git a/src/lynq/framework/lynq-atsvc/src/ril.cpp b/src/lynq/framework/lynq-atsvc/src/ril.cpp
index cb27c32..496bfc7 100755
--- a/src/lynq/framework/lynq-atsvc/src/ril.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/ril.cpp
@@ -6515,7 +6515,16 @@
RequestInfo *pRI = creatRILInfoAndInit(request, UDP, (RIL_SOCKET_ID)(id));
- pRI->lynqEvent = 1;
+ /*lei modify to not display RIL_REQUEST_SCREEN_STATE of ok only sleep mode*/
+ if(uToken == 77777 && request == RIL_REQUEST_SCREEN_STATE)
+ {
+ pRI->lynqEvent = 2;
+ }
+ else
+ {
+ pRI->lynqEvent = 1;
+ }
+ /*lei modify to not display RIL_REQUEST_SCREEN_STATE of ok only sleep mode*/
//Radio on/off only allow one thread operate.
if(request == RIL_REQUEST_RADIO_POWER)
{
diff --git a/src/lynq/framework/lynq-atsvc/src/sim.cpp b/src/lynq/framework/lynq-atsvc/src/sim.cpp
index b32a21d..2235373 100644
--- a/src/lynq/framework/lynq-atsvc/src/sim.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/sim.cpp
@@ -219,7 +219,14 @@
android::emResultNotify("Set successful.\n");
/*Warren add for FAW platform 2021/12/08 start*/
printf("set successful\n");
- sendAtTottyGS(0);
+ if(argv[2] != NULL)
+ {
+ /*do nothing*/
+ }
+ else
+ {
+ sendAtTottyGS(0);
+ }
/*Warren add for FAW platform 2021/12/08 end*/
free(pRI);
} else {