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