[Feature][SZZT-81][AT]Sleep command optimization of AT+MPWRSM
Change-Id: Iffcd3e3f61e4fe7d20a6a890ee3a91da1c0aad5a
diff --git a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
index dc93260..b3d98be 100755
--- a/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/lynq_common.cpp
@@ -929,16 +929,27 @@
/*AT+MPWRSM state*/
if(!strcmp(argv[3], "0"))
{
- /*if module entry sleep mode, need to pull ring pin low level*/
- system("echo out 63 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- #ifdef CV2X_SUPPORT
- /*DSR pin pull high level to wake up host*/
- system("echo out 62 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- //lynq_output_info("test: DSR\n");
- #endif
- /*quit sleep mode*/
- syncRespToUsb(0);
- auto_suspend(argv[3]);
+ if(g_lynq_csclk == 0)
+ {
+ /*quit sleep mode*/
+ syncRespToUsb(0);
+ auto_suspend(argv[3]);
+ }
+ else if(g_lynq_csclk == 1)
+ {
+ /*check dtr level*/
+ if(cat_pin_level("061"))//cat dtr pin level
+ {
+ syncRespToUsb(0);
+ auto_suspend(argv[3]);
+ return;
+ }
+ else
+ {
+ syncRespToUsb(10);//dtr pin is high level, so can't entry sleep mode
+ return;
+ }
+ }
return;
}
/*AT+MPWRSM autosleep*/
@@ -947,13 +958,6 @@
RLOGD("at+MPWRSM begin and value is 1\n");
if(g_lynq_csclk == 0)
{
- /*if module entry sleep mode, need to pull ring pin low level*/
- system("echo out 63 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- #ifdef CV2X_SUPPORT
- /*DSR pin pull high level to wake up host*/
- system("echo out 62 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- //lynq_output_info("test: DSR\n");
- #endif
RLOGD("g_lynq_csclk = 0, entry sleep mode, dont't check dtr pin level\n");
auto_suspend(argv[3]);
syncRespToUsb(0);
@@ -966,12 +970,6 @@
/*check dtr level*/
if(cat_pin_level("061"))//cat dtr pin level
{
- /*if module entry sleep mode, need to pull ring pin low level*/
- system("echo out 63 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- #ifdef CV2X_SUPPORT
- /*DSR pin pull high level to wake up host*/
- system("echo out 62 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
- #endif
auto_suspend(argv[3]);
syncRespToUsb(0);
return;
diff --git a/src/lynq/framework/lynq-atsvc/src/ril.cpp b/src/lynq/framework/lynq-atsvc/src/ril.cpp
index 13ea16f..95d43fd 100755
--- a/src/lynq/framework/lynq-atsvc/src/ril.cpp
+++ b/src/lynq/framework/lynq-atsvc/src/ril.cpp
@@ -4552,6 +4552,14 @@
/*DSR pin pull high level to wake up host*/
system("echo out 62 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
#endif
+ usleep(120*1000);
+ /*if module entry sleep mode, need to pull ring pin low level*/
+ system("echo out 63 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
+ #ifdef CV2X_SUPPORT
+ /*DSR pin pull high level to wake up host*/
+ system("echo out 62 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
+ //lynq_output_info("test: DSR\n");
+ #endif
}
/*lei add for at+mwakeupcfg szzt*/
break;
@@ -4579,6 +4587,14 @@
/*DSR pin pull high level to wake up host*/
system("echo out 62 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
#endif
+ usleep(120*1000);
+ /*if module entry sleep mode, need to pull ring pin low level*/
+ system("echo out 63 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
+ #ifdef CV2X_SUPPORT
+ /*DSR pin pull high level to wake up host*/
+ system("echo out 62 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
+ //lynq_output_info("test: DSR\n");
+ #endif
}
/*lei add for at+mwakeupcfg szzt*/
break;