[Feature][T8TSK-289]Upgrade code repository structure-2

<merge platform ril source>

Only Configure: No
Affected branch: MR3.0-Merge2.0
Affected module: RIL
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: No

Change-Id: Ibfe46b11a02ff246bfd10411f7e07f872bbd1316
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp
index e0b8321..2994ca3 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/atci/atci_lynq_data_cmd.cpp
@@ -10,7 +10,8 @@
 #include <vendor-ril/telephony/ril.h>
 #include <string.h>
 #include <log/log.h>
-
+#include <vector>
+#include "Radio_capability_switch_util.h"
 #include "ATCI.h"
 #include "atci_util.h"
 #include "atci_at_util.h"
@@ -20,6 +21,7 @@
 #include "common.h"
 #include "sim.h"
 
+
 #undef LOG_TAG
 #define LOG_TAG "DEMO_ATCI_DATA"
 #define LINE __LINE__
@@ -139,6 +141,51 @@
     return SYS_SUCC;
 }
 
+int check_sim_state(void)
+{
+    char buf[16];
+    //send request
+    char* argv[1] = { 0 };
+    argv[0] = "RIL_REQUEST_GET_SIM_STATUS";
+    android::lynqSendToRil(1,argv,1024);
+    //wait response from callback
+    if(lynq_wait_result_comeback(2000))
+    {
+        sprintf(buf,"%s","+CME ERROR: 14");//sim busy
+        if(atci_send_data(buf)!=0)
+        {
+            RLOGD("send data fail");
+            return SYS_FAIL;
+        }
+        RLOGD("[%d][%s] wait sim state timeout",LINE,FUNC);
+        return SYS_FAIL;
+    }
+    //judge result
+    if(g_lynq_sim_state != 1)
+    {
+        RLOGD("SIM card absent");
+        sprintf(buf,"%s","+CME ERROR: 10");
+        if(atci_send_data(buf)!=0)
+        {
+            RLOGD("send data fail");
+            return SYS_FAIL;
+        }
+        return SYS_FAIL;
+    }
+    if(checkDataRegistration(1024))
+    {
+        RLOGD("[%d][%s] data registion fail",LINE,FUNC);
+        sprintf(buf,"%s","+CME ERROR: 1");
+        if(atci_send_data(buf)!=0)
+        {
+            RLOGD("send data fail");
+            return SYS_FAIL;
+        }
+        return SYS_FAIL;
+    }
+    return SYS_SUCC;
+}
+
 int atci_data_enable_pdp_hdlr(char *cmd, int op_mode, int target, char *response)
 {
     int ret;
@@ -151,7 +198,6 @@
             //send to target handle
             //ex: at+lapnact=int
             RLOGD("input cmd[%s]", cmd);
-
             if (SYS_FAIL == atci_at_to_equal(&cmd))
             {
                 //input error
@@ -171,9 +217,12 @@
 
             //wrire data to target
             atci_data_req_t req;
-
             if(state==1)
             {
+                if(check_sim_state())
+                {
+                    return SYS_FAIL;
+                }
                 req.request_id = RIL_REQUEST_SETUP_DATA_CALL;
             }
             else if(state == 0)
@@ -185,8 +234,6 @@
                 ATCIResponseNoToken(100,NULL,RIL_REQUEST_SETUP_DATA_CALL);
                 return SYS_FAIL;
             }
-            
-
             char reqStr[RIL_REQUEST_STRING_LENGTH] = {0};
             memcpy(reqStr, request2RILStr(req.request_id),strlen(request2RILStr(req.request_id)) + 1);
             RLOGD("request is %s", reqStr);
@@ -204,6 +251,31 @@
             ATCIResponseNoToken(0,buf,RIL_REQUEST_SETUP_DATA_CALL);
             break;
         }
+        case AT_READ_MODE:
+        {
+            for(int i = 0;i < LYNQ_APN_CHANNEL_MAX; i ++)
+            {
+                if(!apn_table[i].used)
+                {
+                    continue;
+                }
+                memset(buf,0,sizeof(buf));
+                sprintf(buf,"+LAPNACT: %s,%s,%d,%s,%s\n", apn_table[i].apn, apn_table[i].apntype ,apn_table[i].pdpstate, apn_table[i].ifaceName, apn_table[i].address);
+                if(atci_send_data(buf)!=0)
+                {
+                    RLOGD("send data fail");
+                    return SYS_FAIL;
+                }
+            }
+            if(apn_count == 0)
+            {
+                memset(buf,0,sizeof(buf));
+                ATCIResponseNoToken(0,buf,RIL_REQUEST_SETUP_DATA_CALL);
+                return SYS_SUCC;
+            }
+            atci_send_result(0);
+            break;
+        }
         default:
         {
             RLOGD("set mute error");
@@ -236,7 +308,6 @@
             //send to target handle
             //ex: at+lapnact=int
             RLOGD("input cmd[%s]", cmd);
-
             if (SYS_FAIL == atci_at_to_equal(&cmd))
             {
               //input error
@@ -320,6 +391,10 @@
             atci_data_req_t req;
             if(state==1)
             {
+                if(check_sim_state())
+                {
+                    return SYS_FAIL;
+                }
                 req.request_id = RIL_REQUEST_SETUP_DATA_CALL;
             }
             else if(state == 0)
@@ -357,7 +432,7 @@
                     continue;
                 }
                 memset(buf,0,sizeof(buf));
-                sprintf(buf,"+ELAPNACT:%s,%s,%d,%s,%s\n", apn_table[i].apn, apn_table[i].apntype ,apn_table[i].pdpstate, apn_table[i].ifaceName, apn_table[i].address);
+                sprintf(buf,"+ELAPNACT: %s,%s,%d,%s,%s\n", apn_table[i].apn, apn_table[i].apntype ,apn_table[i].pdpstate, apn_table[i].ifaceName, apn_table[i].address);
                 if(atci_send_data(buf)!=0)
                 {
                     RLOGD("send data fail");
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.cpp
index f6cc262..57132ab 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.cpp
@@ -47,8 +47,23 @@
 /*Warren add for t800 ril servie 2021/12/23 start*/
 #include "lynq_interface.h"
 #include <binder/Parcel.h>
+#ifdef LED_SUPPORT
+#include "led.h"
+#endif
 using android::Parcel;
 /*Warren add for t800 ril servie 2021/12/23 end*/
+/*Liu Hong add for t800 LYNQ PUBLIC 2023/11/16 start*/
+static codec_config_t s_codec_config[] = {
+#ifdef GSW_RIL_CFG
+	#include "config/codec_gsw.h"
+#elif ZK_RIL_CFG
+	#include "config/codec_zk.h"
+#esle
+	#include "config/codec_pl.h"
+#endif
+};
+/*Liu Hong add for t800 LYNQ PUBLIC 2023/11/16 end*/
+
 
 static int dtmf_volume = 0;
 void *dtmf_handle = NULL;
@@ -1260,132 +1275,31 @@
     return;
 }
 
-/*hqing add for Geely demand on 11/07/2022, after cs call, codec should sleep*/
+/*hqing add for Geely demand on 11/07/2022, after cs call, codec should sleep
+** Liu Hong modfiy for T800 LYNQ PUBLIC on 2023/11/16
+** @param open [IN]:  0:OFF,1:ON
+*/
 void set_codec(int open)
 {
     RLOGD("set_codec %d",open);
     
-    if(open==0)
+    if(open != 0 && open != 1)
     {
-        system("echo out 201 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");    
-        system("echo out 181 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
+        RLOGE("param %d is invalid !!",open);
+        return;
     }
-    else
+    for(int i = 0; i <= (int32_t)(sizeof(s_codec_config)/sizeof(s_codec_config)[0]);i++)
     {
-        system("echo out 181 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio");
-        usleep(10);//just open need usleep 10us
-        system("echo out 201 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio");        
-        system("echo 0x00 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x01 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x02 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x03 0x80 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x04 0x04 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x05 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x06 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x07 0xa0 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x08 0x20 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x09 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x0a 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x0b 0x32 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x0c 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x0d 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x0f 0x10 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x10 0x20 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x11 0xf8 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x12 0xff > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x13 0x04 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x14 0x78 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x15 0x78 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x16 0x04 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x17 0x78 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x18 0x78 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x19 0x80 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x1a 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x1b 0xfe > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x1c 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x1d 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x1e 0xfe > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x1f 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x20 0x18 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x21 0x18 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x22 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x23 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x24 0xc0 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x25 0xc0 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x26 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x27 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x28 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x29 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x2a 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x2b 0x02 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x2c 0x02 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x2d 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x2e 0x02 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x2f 0x85 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x30 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x31 0x80 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x32 0x85 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x33 0x00 > /sys/kernel/debug/regmap/0-0018/registers"); //dongyu@2023.9.18 Disables CODEC lineout output by default
-        system("echo 0x34 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x35 0x80 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x36 0x82 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x37 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x38 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x39 0x82 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x3a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"); //dongyu@2023.9.18 Disables CODEC lineout output by default
-        system("echo 0x3b 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x3c 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x3d 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x3e 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x3f 0x80 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x40 0xaf > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x41 0x00 > /sys/kernel/debug/regmap/0-0018/registers"); //dongyu@2023.9.18 Disables CODEC lineout output by default
-        system("echo 0x42 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x43 0x80 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x44 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x45 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x46 0x02 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x47 0xaf > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x48 0x00 > /sys/kernel/debug/regmap/0-0018/registers"); //dongyu@2023.9.18 Disables CODEC lineout output by default
-        system("echo 0x49 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x4a 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x4b 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x4c 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x4d 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x4e 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x4f 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x50 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x51 0x02 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x52 0xbf > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x53 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x54 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x55 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x56 0x9b > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x57 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x58 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x59 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x5a 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x5b 0x02 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x5c 0xbf > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x5d 0x08 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x5e 0xde > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x5f 0x0c > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x60 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x61 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x62 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x63 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x64 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x65 0x01 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x66 0xa2 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x67 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x68 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x69 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x6a 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x6b 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x6c 0x40 > /sys/kernel/debug/regmap/0-0018/registers");
-        system("echo 0x6d 0x00 > /sys/kernel/debug/regmap/0-0018/registers");
+        if(s_codec_config[i].p_switch == open)
+        {
+            system(s_codec_config[i].command);
+            if(s_codec_config[i].sleep_time)
+            {
+                usleep(s_codec_config[i].sleep_time);
+            }
+        }
     }
-}
+} 
 
 //void callStateChange(void)
 void speechonoff(int callnum)
@@ -1393,11 +1307,20 @@
     static int callIndex = 0;
     RLOGD("callnum = %d, Call State Change then judge speech on/off!", callnum);
     callIndex = callnum;
-    if( callIndex >= 1 && speechStatus == SPEECH_OFF) {  //speech on
+#if (defined GSW_RIL_CFG) || (defined ZK_RIL_CFG)
+    if( callIndex > 0 && speechStatus == SPEECH_OFF) {  //speech on
         //RLOGD("DemoAPP Call shell command (pactl set-card-profile 0 phonecall)");
         //system("pactl set-card-profile 0 phonecall");
         //RLOGD("DemoAPP Call shell command end");
         set_codec(1); //hqing add for Geely demand on 11/07/2022, init cs call, open codec
+#endif
+
+#ifdef MOBILETEK_RIL_CFG
+    if( callIndex > 0 && speechStatus == SPEECH_OFF) {  //speech on
+        //RLOGD("DemoAPP Call shell command (pactl set-card-profile 0 phonecall)");
+        //system("pactl set-card-profile 0 phonecall");
+        //RLOGD("DemoAPP Call shell command end");
+#endif
         if (get_audio_path() == 0) {
             mixer_set(1);
             speechStatus = NORMAL_SPEECH_ON;
@@ -1426,7 +1349,9 @@
         speechStatus = SPEECH_OFF;
         inCallstatus = CALL_OFF;
         resetMute();
+#if (defined GSW_RIL_CFG) || (defined ZK_RIL_CFG)
         set_codec(0); //hqing add for Geely demand on 11/07/2022, after cs call, close codec for power Manager
+#endif
         RLOGD("[speech]: set off");
     } else {
         RLOGD("callIndex is %d, speechStatus is %d.",callIndex, speechStatus);
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.h
index a1176ae..45abcb3 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.h
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/cc.h
@@ -46,7 +46,12 @@
     CALL_OFF = 0,
     CALL_ON,
 } call_status;
-
+typedef struct
+{
+    int p_switch;//0:off 1:on
+    int sleep_time;//us
+    char *command;
+}codec_config_t;
 //extern int callIndex;
 int dial(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
 int setAudioPath(int argc, char **argv, RIL_SOCKET_ID socket_id, RequestInfo *pRI);
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.cpp
index b178ee6..ced8e0a 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.cpp
@@ -95,6 +95,7 @@
 */
 extern int current_data_reg = -1;
 extern int modemStatus = 0;
+int g_lynq_sim_state = -1;
 
 /*Warren add for SZZT 2021/11/14 end*/
 
@@ -370,22 +371,26 @@
     pthread_mutex_unlock(&s_state_change_mutex);
 }
 
-void lynq_wait_result_comeback(int mtime)
+int lynq_wait_result_comeback(int mtime)
 {
     RLOGD("wait_call_state");
     int sec = 0;
-    int usec = 0;
+    int ms = 0;
     struct timeval now;
     struct timespec timeout;
     gettimeofday(&now,NULL);
     sec = mtime/1000;
-    usec = mtime%1000;
+    ms = mtime%1000;
     timeout.tv_sec = now.tv_sec+sec;
-    timeout.tv_nsec = now.tv_usec*1000+usec*1000000;
+    unsigned long long ns;
+    ns = now.tv_usec*1000ull + ms*1000000ull;
+    timeout.tv_sec += ns/1000000000;
+    timeout.tv_nsec = ns % 1000000000;
     pthread_mutex_lock(&s_state_change_mutex);
-    pthread_cond_timedwait(&s_state_change_cond,&s_state_change_mutex,&timeout);
+    int ret = pthread_cond_timedwait(&s_state_change_cond,&s_state_change_mutex,&timeout);
     pthread_mutex_unlock(&s_state_change_mutex);
     RLOGD("wait_call_state end");
+    return ret;
 }
 
 int get_default_sim_voice(){
@@ -564,6 +569,9 @@
     } else {
         RLOGD("[slot%d]updateCardStatusV6: sim card message is null", slot);
     }
+#ifdef LED_SUPPORT
+    mbtk_netled_state_update(GPIO_NETLED_REFLASH_NORMAL);  
+#endif
 }
 
 char* getAid(int slot)
@@ -590,6 +598,9 @@
         reg_voice_service_state[slot] = atoi(code);
         regCodeToServiceState(request, atoi(code), slot);
     }
+#ifdef LED_SUPPORT
+    mbtk_netled_state_update(GPIO_NETLED_REFLASH_NORMAL);  
+#endif
 }
 
 void update_reg_voice_radio_tech(int request, int code, int slot, int32_t token) {
@@ -609,6 +620,9 @@
         current_data_reg = status;       
         /*Warren change for SZZT 2021//11/14 end*/
     }
+#ifdef LED_SUPPORT
+    mbtk_netled_state_update(GPIO_NETLED_REFLASH_NORMAL);  
+#endif
 }
 
 void update_reg_data_radio_tech(int request, int code, int slot, int32_t token){
@@ -1038,6 +1052,18 @@
     }
     return false;	
 }
+/*hqing add for led start*/
+bool ril_get_if_3gpp_data_reg_success()
+{
+    int slot_id=get_default_sim_data();
+
+    if(slot_id==0 || slot_id ==1)
+    {
+        return reg_data_service_state[slot_id] ==1;
+    }
+    return false;	
+}
+/*hqing add for led start end*/
 #endif
 /*hq add for key info output 2022/03/01 begin*/
 // void lynq_output_LINFO_all()
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.h
index 58aef69..e6c681c 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.h
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/common.h
@@ -82,6 +82,7 @@
 #define PROP_DEFAULT_DATA_SIM_STATUS "vendor.radio.data.enable"
 #define ATCI_SIM "persist.vendor.service.atci.sim"
 //#define PROP_DATA_ALLOW_STATUS "vendor.ril.data.allow.status"
+#define RIL_STUB_TEST_SWTICH_RTP_RECORD (1)
 //Warren add for plantform 2021_08_11 start
 /* 
 **The range of error values unique to LYNQ is 8000 to 10000.
@@ -149,6 +150,7 @@
 */
 extern int current_data_reg;
 extern int modemStatus;
+extern int g_lynq_sim_state;
 /*Warren add for SZZT 2021/11/14 end*/
 
 // extern int lynq_output_LINFO_enable;
@@ -172,7 +174,7 @@
 void lynq_output_info(const char* format,...);
 
 void lynq_send_result_already(void);
-void lynq_wait_result_comeback(int mtime);
+int lynq_wait_result_comeback(int mtime);
 
 void updateCardStatusV6(RIL_CardStatus_v6 *card_status,int slot);
 char* getAid(int slot);
@@ -207,6 +209,7 @@
 /*for led add by hq 20221202*/
 bool ril_get_if_insert_simcard();
 bool ril_get_if_3gpp_reg_success();
+bool ril_get_if_3gpp_data_reg_success();
 #endif
 
 /*for urc broad cast optimission by hq 20221216*/
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/config/codec_gsw.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/config/codec_gsw.h
new file mode 100755
index 0000000..bd20f31
--- /dev/null
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/config/codec_gsw.h
@@ -0,0 +1,113 @@
+{0,0,"echo out 201 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{0,0,"echo out 181 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{1,10,"echo out 181 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{1,0,"echo out 201 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{1,0,"echo 0x00 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x01 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x02 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x03 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x04 0x04 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x05 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x06 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x07 0xa0 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x08 0x20 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x09 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0b 0x32 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0f 0x10 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x10 0x20 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x11 0xf8 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x12 0xff > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x13 0x04 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x14 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x15 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x16 0x04 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x17 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x18 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x19 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1b 0xfe > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1e 0xfe > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1f 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x20 0x18 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x21 0x18 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x22 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x23 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x24 0xc0 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x25 0xc0 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x26 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x27 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x28 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x29 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2b 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2c 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2e 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2f 0x85 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x30 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x31 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x32 0x85 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x33 0x00 > /sys/kernel/debug/regmap/0-0018/registers"}, //dongyu@2023.9.18 Disables CODEC lineout output by default
+{1,0,"echo 0x34 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x35 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x36 0x82 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x37 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x38 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x39 0x82 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"}, //dongyu@2023.9.18 Disables CODEC lineout output by default
+{1,0,"echo 0x3b 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3e 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3f 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x40 0xaf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x41 0x00 > /sys/kernel/debug/regmap/0-0018/registers"}, //dongyu@2023.9.18 Disables CODEC lineout output by default
+{1,0,"echo 0x42 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x43 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x44 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x45 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x46 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x47 0xaf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x48 0x00 > /sys/kernel/debug/regmap/0-0018/registers"}, //dongyu@2023.9.18 Disables CODEC lineout output by default
+{1,0,"echo 0x49 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4b 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4e 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4f 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x50 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x51 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x52 0xbf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x53 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x54 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x55 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x56 0x9b > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x57 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x58 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x59 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5b 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5c 0xbf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5d 0x08 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5e 0xde > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5f 0x0c > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x60 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x61 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x62 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x63 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x64 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x65 0x01 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x66 0xa2 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x67 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x68 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x69 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6b 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6c 0x40 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/config/codec_pl.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/config/codec_pl.h
new file mode 100755
index 0000000..ff8596c
--- /dev/null
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/config/codec_pl.h
@@ -0,0 +1,114 @@
+{0,0,"echo out 201 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{0,0,"echo out 181 0 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{1,10,"echo out 181 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{1,0,"echo out 201 1 >/sys/devices/platform/10005000.pinctrl/mt_gpio"},
+{1,0,"echo 0x00 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x01 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x02 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x03 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x04 0x04 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x05 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x06 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x07 0xa0 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x08 0x20 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x09 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0b 0x32 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x0f 0x10 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x10 0x20 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x11 0xf8 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x12 0xff > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x13 0x04 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x14 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x15 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x16 0x04 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x17 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x18 0x78 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x19 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1b 0xfe > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1e 0xfe > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x1f 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x20 0x18 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x21 0x18 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x22 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x23 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x24 0xc0 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x25 0xc0 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x26 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x27 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x28 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x29 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2b 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2c 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2e 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x2f 0x85 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x30 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x31 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x32 0x85 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x33 0x9f > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x34 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x35 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x36 0x82 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x37 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x38 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x39 0x82 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3a 0x9f > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3b 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3e 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x3f 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x40 0xaf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x41 0x0d > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x42 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x43 0x80 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x44 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x45 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x46 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x47 0xaf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x48 0x0d > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x49 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4b 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4c 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4e 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x4f 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x50 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x51 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x52 0xbf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x53 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x54 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x55 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x56 0x9b > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x57 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x58 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x59 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5b 0x02 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5c 0xbf > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5d 0x08 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5e 0xde > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x5f 0x0c > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x60 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x61 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x62 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x63 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x64 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x65 0x01 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x66 0xa2 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x67 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x68 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x69 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6a 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6b 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6c 0x40 > /sys/kernel/debug/regmap/0-0018/registers"},
+{1,0,"echo 0x6d 0x00 > /sys/kernel/debug/regmap/0-0018/registers"},
+
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/include/led.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/include/led.h
new file mode 100755
index 0000000..d8d6508
--- /dev/null
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/include/led.h
@@ -0,0 +1,44 @@
+/**

+ * @file led.h

+ * @author hq

+ * @brief 

+ * @version 1.0

+ * @date 2022-11-28

+ * 

+ * @copyright Copyright (c) 2022

+ * 

+ */

+#ifdef LED_SUPPORT 

+#ifndef LED_H

+#define LED_H 1

+

+#define wait_led_update_effective_timer_ms 20

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+typedef enum

+{

+    GPIO_NETLED_REFLASH_NORMAL,

+    GPIO_NETLED_CS_CALLING,

+    GPIO_NETLED_CS_CALLEND,

+    GPIO_NETLED_PPP_CONNECT,

+    GPIO_NETLED_PPP_CLOSED,

+    GPIO_NETLED_AP_GOINGSLEEP,

+    GPIO_NETLED_AP_WAKEUP,

+    GPIO_NETLED_WWAN_CONNECT,

+    GPIO_NETLED_WWAN_CLOSED,

+} mbtk_netled_reflash_type;

+

+void mbtk_netled_state_update(mbtk_netled_reflash_type flag);

+

+void mbtk_netled_init();

+

+void mbtk_netled_deinit();

+

+#ifdef __cplusplus

+}

+#endif

+#endif

+#endif

diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/led.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/led.cpp
index 62e4b11..a252764 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/led.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/led.cpp
@@ -273,24 +273,25 @@
 

 mbtk_netled_reg_net_status  mbtk_get_reg_net_status(void)

 {

-    mbtk_netled_reg_net_status reg_net_status = NET_REG_FAIL;

-

     if(false  == ril_get_if_insert_simcard())

     {

         RLOGE("ril_get_if_insert_simcard false" );

-        reg_net_status = NET_REG_FAIL;

-        return reg_net_status;

+        return NET_REG_FAIL;

     }

    

     if(true == ril_get_if_3gpp_reg_success())

     {

         RLOGD("ril_get_if_3gpp_reg_success true");

-        reg_net_status = NET_REG_SUCCESS;

-        return reg_net_status;

+        return NET_REG_SUCCESS;

     }

 

-    return reg_net_status;

+    if(true == ril_get_if_3gpp_data_reg_success())

+    {

+        RLOGD("ril_get_if_3gpp_data_reg_success true");

+        return NET_REG_SUCCESS;

+    }	

 

+    return NET_REG_FAIL;

 }

 

 /*=============================================

@@ -504,7 +505,6 @@
 	}

 }

 

-

 /*=============================================

 FUNCTION

     mbtk_netled_reflash_handle

diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/led_inner.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/led_inner.h
new file mode 100755
index 0000000..5b0750d
--- /dev/null
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/led/led_inner.h
@@ -0,0 +1,61 @@
+/**

+ * @file led_inner.h

+ * @author hq

+ * @brief 

+ * @version 1.0

+ * @date 2022-11-28

+ * 

+ * @copyright Copyright (c) 2022

+ * 

+ */

+#ifdef LED_SUPPORT 

+#ifndef LED_INNER_H

+#define LED_INNER_H 1

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+/*************************************************************

+    Definitions:enum,struct,union,class

+*************************************************************/

+typedef struct {

+    bool gpio_netled_cs_flag;

+    bool gpio_netled_ppp_flag;

+    bool gpio_netled_wwan_flag;

+    bool gpio_netled_goingsleep_flag;

+}mbtk_netled_state_t;

+

+typedef enum

+{

+    GPIO_NETLED_OFF,

+    GPIO_NETLED_REG,

+    GPIO_NETLED_CONNECT,

+    GPIO_NETLED_LIGHT,

+    GPIO_CS_REG,

+    GPIO_NETLED_MAX

+}mbtk_netled_status_type;

+

+typedef enum

+{

+    NET_REG_SUCCESS,

+    NET_REG_FAIL,

+    NET_REG_MAX

+}mbtk_netled_reg_net_status;

+

+typedef enum

+{

+    MBTK_SOCKET_CONNECTED,

+    MBTK_SOCKET_DISCONNECT,

+    MBTK_SOCKET_CONN_MAX

+}mbtk_netled_socket_conn_status;

+

+/*************************************************************

+    Function Declaration

+*************************************************************/

+

+#ifdef __cplusplus

+}

+#endif

+#endif

+#endif

diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.cpp
index 418fe86..a5338bc 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.cpp
@@ -390,8 +390,11 @@
     char *argv_temp[3]={};
     argv_temp[0] = "RIL_REQUEST_DATA_REGISTRATION_STATE";
     android::lynqSendToRil(1,argv_temp,uToken);
-    ret = lynqATWaitWithTime(10);
-    printf("ret=%d\n,current_data_reg=%d\n",ret,current_data_reg);
+    if(lynqATWaitWithTime(2000))
+    {
+        RLOGD("function %s line %d time out", __FUNCTION__, __LINE__);
+        return -1;
+    }
     /*
     if(ret == ETIMEDOUT)
     {
@@ -405,11 +408,6 @@
     */
     if(current_data_reg!=0)
     {
-        int n = write(ttyGS3_fd,"+CME ERROR: 1\n",strlen("+CME ERROR: 1\n"));
-        if(n<0)
-        {
-            perror("lynq resp write:");
-        }
         return -1;
     }
     return 0;
@@ -887,21 +885,24 @@
     return 0;
 }
 
-int lynqATWaitWithTime(int time)
+int lynqATWaitWithTime(int mtime)
 {
-    int ret = 0;
-    struct timespec start_tm;
-    //struct timespec end_tm;
-    //int timeout_ms = 2500;
-    clock_gettime(CLOCK_MONOTONIC, &start_tm);
-    //struct timeval now;
-    struct timespec outTime;
-    //gettimeofday(&now, NULL);//now.tv_sec(s),now.tv_usec(Micro s)
-    outTime.tv_sec = start_tm.tv_sec + time;
+    RLOGD("wait_call_state");
+    int sec = 0;
+    int usec = 0;
+    struct timeval now;
+    struct timespec outtime;
+    gettimeofday(&now,NULL);
+    sec = mtime/1000;
+    outtime.tv_sec = now.tv_sec+sec;
+    unsigned long long ns;
+    ns = now.tv_usec*1000ull + (mtime%1000)*1000000ull;
+    outtime.tv_sec += ns/1000000000;
+    outtime.tv_nsec = ns%1000000000;
     pthread_mutex_lock(&lynq_at_mutex);
-    //ret = pthread_cond_timedwait(&lynq_at_cond,&lynq_at_mutex,&outTime);
-    pthread_cond_wait(&lynq_at_cond,&lynq_at_mutex);
+    int ret = pthread_cond_timedwait(&lynq_at_cond,&lynq_at_mutex,&outtime);
     pthread_mutex_unlock(&lynq_at_mutex);
+    RLOGD("wait_call_state end");
     return ret;
 }
 void lynqAtRespWatingEvent()
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.h
index ec1e9e2..16b6403 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.h
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_common.h
@@ -122,4 +122,5 @@
 int lynq_modify_apn_info(int argc,char*argv[],char *rilReq, int uToken);
 void sendSignalApnChange();
 int waitApnResult();
+int checkDataRegistration(int uToken);
 #endif
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_ril_service.service b/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_ril_service.service
index 86df0f9..4cca935 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_ril_service.service
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/lynq_ril_service.service
@@ -16,4 +16,4 @@
 
 [Install]
 Alias=rilsvc
-WantedBy=multi-user.target
\ No newline at end of file
+WantedBy=multi-user.target
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/main.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/main.cpp
index 1446c6f..0b2c2a3 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/main.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/main.cpp
@@ -123,6 +123,7 @@
     }
 }
 
+
 int main(int argc, char **argv) {
     /*lei add for gsw
     reason:Socket sending failed at GSW
@@ -176,7 +177,7 @@
         dlsym(dlHandle, "RIL_Init");
 
     if (rilInit == NULL) {
-        RLOGE("RIL_Init not defined or exported in %s", rilLibPath);       
+        RLOGE("RIL_Init not defined or exported in %s", rilLibPath);
         exit(EXIT_FAILURE);
     }
 
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/makefile b/LYNQ_PUBLIC/framework/lynq-ril-service/src/makefile
index a5a6352..565411d 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/makefile
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/makefile
@@ -25,6 +25,10 @@
     LOCAL_CFLAGS += -DMODE_DSSS
 endif
 
+ifeq ($(strip $(MTK_LED_SUPPORT)), yes)
+    LOCAL_CFLAGS += -DLED_SUPPORT
+endif
+
 $(warning ################# TARGET_PLATFORM: $(TARGET_PLATFORM))
 ifeq ($(strip $(TARGET_PLATFORM)), mt2731)
 $(warning ################# TARGET_PLATFORM_MT2731)
@@ -41,6 +45,21 @@
 LOCAL_CFLAGS += -DBASELIB_DIR_LIB64 -DTELEMATIC_5G_SUPPORT
 endif
 
+ifeq ($(strip $(MOBILETEK_RIL_CFG)), GSW)
+    LOCAL_CFLAGS += -DGSW_RIL_CFG
+
+endif
+
+ifeq ($(strip $(MOBILETEK_RIL_CFG)), ZK)
+    LOCAL_CFLAGS += -DZK_RIL_CFG
+endif
+
+ifeq ($(strip $(MOBILETEK_RIL_CFG)), PLATFORM)
+    LOCAL_CFLAGS += -DMOBILETEK_RIL_CFG
+
+endif
+
+
 LOCAL_PATH   = .
 
 LOCAL_C_INCLUDES = \
@@ -66,8 +85,8 @@
   -I$(LOCAL_PATH)/ecall/gost/sslp/teledata \
   -I$(LOCAL_PATH)/rndis \
   -I$(LOCAL_PATH)/factory \
-  -I$(LOCAL_PATH)/fota \
   -I$(LOCAL_PATH)/temp \
+  -I$(LOCAL_PATH)/led/include \
   -I$(ROOT)$(includedir)/logger \
   -I$(ROOT)$(includedir)/liblog \
   -I$(ROOT)$(includedir)/liblynq-thermal \
@@ -115,7 +134,6 @@
     -llynq-thermal  \
     -llynq-systime \
     -llynq-uci \
-    -llynq-fota \
     -llynq-protcl \
     -llynq-shm  \
 
@@ -126,7 +144,7 @@
 endif
 
 
-SOURCES = $(wildcard util/*.cpp *.cpp ecall/*.cpp ecall/gost/*.cpp ecall/gost/utils/*.cpp ecall/gost/sslp/*.cpp ecall/gost/sslp/auth/*.cpp ecall/gost/sslp/firmware/*.cpp ecall/gost/sslp/commands/*.cpp ecall/gost/sslp/ecall/*.cpp ecall/gost/sslp/teledata/*.cpp data/*.cpp  em/rfdesense/*.cpp em/networkinfo/*.cpp em/*.cpp sms/*.cpp sms/gsm/*.cpp sms/cdma/*.cpp atci/*.cpp stateManager/*.cpp sms/lynqSmsManager/*.cpp  rndis/*.cpp factory/*.cpp  temp/*.cpp fota/*.cpp)
+SOURCES = $(wildcard util/*.cpp *.cpp ecall/*.cpp ecall/gost/*.cpp ecall/gost/utils/*.cpp ecall/gost/sslp/*.cpp ecall/gost/sslp/auth/*.cpp ecall/gost/sslp/firmware/*.cpp ecall/gost/sslp/commands/*.cpp ecall/gost/sslp/ecall/*.cpp ecall/gost/sslp/teledata/*.cpp data/*.cpp  em/rfdesense/*.cpp em/networkinfo/*.cpp em/*.cpp sms/*.cpp sms/gsm/*.cpp sms/cdma/*.cpp atci/*.cpp stateManager/*.cpp sms/lynqSmsManager/*.cpp  rndis/*.cpp factory/*.cpp  temp/*.cpp led/*.cpp)
 
 EXECUTABLE = lynq-ril-service
 
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/mtk_ril_commands.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/mtk_ril_commands.h
index 4b10fce..eb1f8d0 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/mtk_ril_commands.h
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/mtk_ril_commands.h
@@ -78,9 +78,7 @@
 { RIL_REQUEST_MODEM_POWEROFF,dispatchVoid,responseVoid},
 { RIL_REQUEST_MODEM_POWERON,dispatchVoid,responseVoid},
 //SIM
-//xf.li@20231120 modify for T8TSK-291 start
-{ RIL_REQUEST_QUERY_ICCID, dispatchVoid, responseStringNoLog},
-//xf.li@20231120 modify for T8TSK-291 end
+{ RIL_REQUEST_QUERY_ICCID, dispatchVoid, responseString},
 //Keepalive
 #ifdef KEEP_ALIVE
 { RIL_REQUEST_START_KEEPALIVE_PRO,dispatchStartKeepalivePro,responseInts},
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril.cpp
index db7d129..2522bfe 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril.cpp
@@ -88,9 +88,6 @@
 /*rita add start*/
 #include "lynq_at_temp.h"
 /*rita add end*/
-/*lt add start*/
-#include "lynq_fota.h"
-/*lt add end*/
 /*Warren add for t800 RIL service 2021_12_10 end*/
 #ifdef LED_SUPPORT
 #include "led.h"
@@ -304,9 +301,6 @@
 static int responseFailCause(Parcel &p, void *response, size_t responselen);
 static int responseStrings(Parcel &p, void *response, size_t responselen);
 static int responseString(Parcel &p, void *response, size_t responselen);
-//xf.li@20231120 modify for T8TSK-291 start
-static int responseStringNoLog(Parcel &p, void *response, size_t responselen);
-//xf.li@20231120 modify for T8TSK-291 end
 static int responseVoid(Parcel &p, void *response, size_t responselen);
 static int responseCallList(Parcel &p, void *response, size_t responselen);
 static int responseSMS(Parcel &p, void *response, size_t responselen);
@@ -369,10 +363,7 @@
 void initRequestInfo(RequestInfo *pRI, int  request, int mode, RIL_SOCKET_ID soc_id);
 void getVoiceAndDataRegistrationState(RIL_SOCKET_ID soc_id);
 const int waitResponse(int token);
-//xf.li@20231120 modify for T8TSK-291 start
-static void encode_log(char str[], int n);
-static void decode_log(char str[], int n);
-//xf.li@20231120 modify for T8TSK-291 end
+
 #ifdef RIL_SHLIB
 #if defined(ANDROID_MULTI_SIM)
 extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
@@ -2168,20 +2159,7 @@
     writeStringToParcel(p, (const char *)response);
     return 0;
 }
-//xf.li@20231120 modify for T8TSK-291 start
-static int responseStringNoLog(Parcel &p, void *response, size_t responselen) {
-    /* one string only */
-    startResponse;
-    char log_buf[512] = {0};
-    snprintf(log_buf, sizeof(log_buf), "%s", (char*)response);
-    encode_log(log_buf, 6);
-//    appendPrintBuf("%s%s", printBuf, "(has got)");
-    closeResponse;
 
-    writeStringToParcel(p, (const char *)response);
-    return 0;
-}
-//xf.li@20231120 modify for T8TSK-291 end
 static int responseVoid(Parcel &p, void *response, size_t responselen) {
     startResponse;
     removeLastChar;
@@ -2528,99 +2506,11 @@
     }
 
     startResponse;
-    //xf.li@20231120 modify for T8TSK-291 start 
-    char log_buf[512] = {0};
-    if(strncmp("+CNUM:", (char*)response, strlen("+CNUM:")) == 0)
-    {
-        snprintf(log_buf, sizeof(log_buf), "len=%d,%s", responselen, (char*)response);
-        encode_log(log_buf, 6);
-    }
-    else
-    {
-        appendPrintBuf("%slen=%d,%s", printBuf, responselen, (char*)response);
-    }
-    //xf.li@20231120 modify for T8TSK-291 end
+    appendPrintBuf("%slen=%d,%s", printBuf, responselen, (char*)response);
     closeResponse;
     return 0;
 }
-//xf.li@20231120 modify for T8TSK-291 start
-static void string_to_hex(unsigned char *Buff, unsigned int BuffLen, char *OutputStr)
-{
-    int i = 0;
-    char TempBuff[512*2 + 1] = {0};
-    char strBuff[512*2 + 1] = {0};
 
-    if(BuffLen > 512)
-    {
-        RLOGD("string_to_hex error!");
-        return;
-    }
-    for(i = 0; i<BuffLen;i++)
-    {
-        sprintf(TempBuff,"%02x",(unsigned char)Buff[i]);
-        strncat(strBuff,TempBuff,BuffLen*2);
-    }
-    strncpy(OutputStr, strBuff, BuffLen*2);
-    return;
-}
-
-static void encode_log(char input_str[], int n)
-{
-    char c;
-    int i;
-    char str[512*2 + 1] = {0};
-    string_to_hex((unsigned char *)input_str, strlen(input_str), str);
-    for( i=0; i<strlen(str); i++)
-    {
-        c = str[i];
-        if(c>=' ' && c <= 'z')
-        {
-            if(c + n%90 <= 'z')
-            { 
-                str[i] = (char)(c + n%90);  //encode
-            }
-            else
-            {  //After encoding, the space beyond the end reaches ‘z’, and the cycle starts from the beginning.
-                str[i] = (char)(c + n%90 - 90);//encode
-            }
-        }
-        else
-        {
-            str[i]=c;
-        }
-    }
-
-    appendPrintBuf("%s%s", printBuf, str);
-}
-//decode() only for analysis log
-static void decode_log(char str[], int n)
-{
-    char c;
-    int i;
-    
-    for(i=0; i<strlen(str); i++)
-    {
-        c=str[i];
-        
-        if(c >= ' ' && c <= 'z')
-        {
-            if(c - n%90 >= ' ')
-            {
-                str[i] = (char)(c - n%90); //decode
-            }
-            else
-            {
-                //After decoding, there are over spaces until ‘z’, and the lowercase letters are processed into printable information by looping
-                str[i] = (char)(c - n%90 + 90); //decode
-            }
-        }
-        else
-        {
-            str[i]=c;
-        }
-    }
-}
-//xf.li@20231120 modify for T8TSK-291 end
 
 static int responseSIM_IO(Parcel &p, void *response, size_t responselen) {
     if (response == NULL) {
@@ -4139,6 +4029,11 @@
     }
 }
 
+static void lynq_get_sim_state(RIL_CardStatus_v6 *card_status)
+{
+    g_lynq_sim_state = card_status->card_state;
+}
+
 extern "C" void
 RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen) {
     RequestInfo *pRI;
@@ -4323,7 +4218,9 @@
                    if (responselen == sizeof (RIL_CardStatus_v6)) {
                        RIL_CardStatus_v6 *p_cur = ((RIL_CardStatus_v6 *) response);
                        updateCardStatusV6(p_cur, socket_id);
+                       lynq_get_sim_state(p_cur);
                    }
+                   lynq_send_result_already();
                    break;
                }
                case RIL_REQUEST_VOICE_RADIO_TECH:
@@ -4766,7 +4663,10 @@
         updateIccCardState(soc_id);
         break;
     case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED:
-        getVoiceAndDataRegistrationState(soc_id);
+        ARspRequest(RIL_REQUEST_VOICE_REGISTRATION_STATE,soc_id);
+        break;
+    case RIL_UNSOL_RESPONSE_PS_NETWORK_STATE_CHANGED:
+        ARspRequest(RIL_REQUEST_DATA_REGISTRATION_STATE,soc_id);
         break;
     case RIL_UNSOL_RESPONSE_NEW_SMS:
         responseNewSMS((const char*)data, datalen,soc_id,unsolResponse,p);
@@ -5690,6 +5590,9 @@
 
 static void initCoditions()
 {
+#ifdef LED_SUPPORT
+    mbtk_netled_init();
+#endif
     mixer_init();
     if(utils::is_support_dsds()) {
         for(int i = 0; i < 2 ; i++) {
@@ -5700,7 +5603,7 @@
     if(utils::is_suppport_dsss()) {
         int id = Phone_utils::get_enable_sim_for_dsss();
         init(id);
-    }	
+    }    
 }
 
 
@@ -5822,7 +5725,7 @@
 {
     char *pos, *pos2;
     int argc = 0;
-    printf("LYNQ_REQUEST cmd=%s\n",cmd);
+    printf("warren test cmd=%s\n",cmd);
     pos = cmd;
     while (1) {
         // Trim the space characters.
@@ -6123,7 +6026,7 @@
                     argc = argc+1;
                     for(int t = 0;t<argc;t++)
                     {
-                        RLOGD("LYNQ_REQUEST argv[%d]=%s\n",t,argv[t]);
+                        RLOGD("warren test argv[%d]=%s\n",t,argv[t]);
                     }
                     COMMAND *command = find_command(argv[0]);
                     if(!command)
@@ -6213,6 +6116,9 @@
      }
      RLOGD("close socket fd");
      close(server_socket_fd);
+#ifdef LED_SUPPORT
+     mbtk_netled_deinit();
+#endif
      return ;
 }
 int LYNQ_RIL_respSocket(Parcel &p,RIL_Token t)
@@ -6846,11 +6752,6 @@
                         lynq_get_factory_data(argc,argv);
                         break;
                     }
-                    case LYNQ_GOTO_FOTA:
-                    {
-                         lynq_atfota_test(argv);
-                         break;
-                     }
                     /*rita add start*/
                     case LYNQ_GOTO_TEMP:
                     {
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril_commands.h b/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril_commands.h
index 362bb7d..85878ee 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril_commands.h
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/ril_commands.h
@@ -25,9 +25,7 @@
     {RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION, dispatchStrings, responseInts},
     {RIL_REQUEST_GET_CURRENT_CALLS, dispatchVoid, responseCallList},
     {RIL_REQUEST_DIAL, dispatchDial, responseVoid},
-    //xf.li@20231120 modify for T8TSK-291 start
-    {RIL_REQUEST_GET_IMSI, dispatchStrings, responseStringNoLog},
-    //xf.li@20231120 modify for T8TSK-291 end
+    {RIL_REQUEST_GET_IMSI, dispatchStrings, responseString},
     {RIL_REQUEST_HANGUP, dispatchInts, responseVoid},
     {RIL_REQUEST_HANGUP_WAITING_OR_BACKGROUND, dispatchVoid, responseVoid},
     {RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND, dispatchVoid, responseVoid},
diff --git a/LYNQ_PUBLIC/framework/lynq-ril-service/src/stateManager/stateManager.cpp b/LYNQ_PUBLIC/framework/lynq-ril-service/src/stateManager/stateManager.cpp
index 9e16b5e..d4f3ce3 100755
--- a/LYNQ_PUBLIC/framework/lynq-ril-service/src/stateManager/stateManager.cpp
+++ b/LYNQ_PUBLIC/framework/lynq-ril-service/src/stateManager/stateManager.cpp
@@ -47,6 +47,9 @@
 #include "util/utils.h"
 #include <cutils/jstring.h>
 #include <liblog/lynq_deflog.h>
+#ifdef LED_SUPPORT
+#include "led.h"
+#endif
 #undef LOG_TAG
 #define LOG_TAG "DEMO_MANAGER"
 
@@ -96,7 +99,13 @@
     size_t pos = p.dataPosition();
 
     p.writeInt32(1);
-    p.writeInt32(atoi(argv[1]));
+
+    int screen_state= atoi(argv[1]);
+    p.writeInt32(screen_state);
+#ifdef LED_SUPPORT
+    mbtk_netled_state_update(screen_state==0 ? GPIO_NETLED_AP_GOINGSLEEP : GPIO_NETLED_AP_WAKEUP);	
+    usleep(wait_led_update_effective_timer_ms*1000);
+#endif
 
     p.setDataPosition(pos);
     pRI->pCI->dispatchFunction(p, pRI);
diff --git a/LYNQ_PUBLIC/lib/liblynq-sim/include/lynq_sim.h b/LYNQ_PUBLIC/lib/liblynq-sim/include/lynq_sim.h
index c2d7793..325d52f 100755
--- a/LYNQ_PUBLIC/lib/liblynq-sim/include/lynq_sim.h
+++ b/LYNQ_PUBLIC/lib/liblynq-sim/include/lynq_sim.h
@@ -2,8 +2,8 @@
 #     FileName: lynq_sim.h
 #     Desc: about SIMAPI
 #     Author: lei 
-#     Version: V1.0
-#     LastChange: 2022-03-31 
+#     Version: V2.0
+#     LastChange: 2023-03-13 
 #     History: 
 # If you need to use any API under lynq_sim, you must first call the lynq_sim_init() function to initialize these functions.
 =============================================================================*/
diff --git a/LYNQ_PUBLIC/lib/liblynq-sim/src/lynq_sim.cpp b/LYNQ_PUBLIC/lib/liblynq-sim/src/lynq_sim.cpp
index 0099537..3045075 100755
--- a/LYNQ_PUBLIC/lib/liblynq-sim/src/lynq_sim.cpp
+++ b/LYNQ_PUBLIC/lib/liblynq-sim/src/lynq_sim.cpp
@@ -16,27 +16,16 @@
 #include <log/log.h>
 #include <cutils/jstring.h>
 #include <pthread.h>
-#include "lynq_sim.h"
-#include <sys/socket.h>   
-#include <netinet/in.h>   
+#include <vendor-ril/telephony/ril.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
 #include <arpa/inet.h>
 #include <errno.h> /*add for get recvfrom errorid on 20220921*/
 #include <sys/stat.h>
 #include <fcntl.h>
+#include "lynq_sim.h"
 #define MAX_BUF 20
 #define MAX_NUM 80
-#define RIL_REQUEST_GET_SIM_STATUS 1
-#define RIL_REQUEST_GET_IMSI 11
-#define RIL_REQUEST_QUERY_ICCID 2026
-#define RIL_REQUEST_SET_FACILITY_LOCK 43
-#define RIL_REQUEST_QUERY_FACILITY_LOCK 42
-#define RIL_REQUEST_ENTER_SIM_PIN 2
-#define RIL_REQUEST_ENTER_SIM_PUK 3
-#define RIL_REQUEST_CHANGE_SIM_PIN 6
-#define RIL_REQUEST_OEM_HOOK_RAW 59
-#define RIL_REQUEST_SCREEN_STATE 61
-#define RIL_REQUEST_SIM_IO 28
-#define RIL_REQUEST_DEVICE_IDENTITY 98
 #define LYNQ_REQUEST_SET_DEFAULT_SIM_ALL 8008
 #define LYNQ_REQUEST_CHANGE_SCREEN_STATE 8014 /*add for two sim suspend on 20220919*/
 #define LYNQ_REQUEST_CHANGE_RADIO 8015
@@ -55,17 +44,11 @@
     char param[MAX_LEN];
 }lynq_client_t;
 
-lynq_client_t client_t;
 /* socket文件描述符 */ 
 int len_addr_serv;
 struct sockaddr_in addr_serv;
 static int sock_fd = 0;
-int Global_uToken = 0; 
-int solicited_token = -1;
-int resp_type = -1;
-int request = -1;
-int slot_id = -1;
-int error1 = -1;
+int Global_uToken = 0;
 static pthread_mutex_t g_lynq_sim_sendto_mutex;
 /**
  * @brief mark call initialization state
@@ -81,11 +64,154 @@
 char pin2_buf[32] = {0};
 char aidPtr_buf[32] = {0};
 
-/**/
+/**
+ * @brief lynq_shutdown need
+ */
 char options_buf[32] = {0};
 char time_buf[32] = {0};
 char message_buf[32] = {0};
 
+typedef struct{
+    int resp_type;
+    int token;
+    int request;
+    int slot_id;
+    int error;
+}lynq_resp_t;
+
+#define RESULT_OK (0)
+#define RESULT_ERROR (-1)
+
+typedef enum{
+    /*base abnormal*/
+    LYNQ_E_PARAMETER_ANONALY=7000,
+    LYNQ_E_SEND_REQUEST_FAIL=7001,
+    LYNQ_E_GET_HEAD_ERROR=7002,
+    LYNQ_E_INNER_ERROR=7100,
+    LYNQ_E_MALLOC_ERROR=7101,
+    /**/
+    LYNQ_E_CARDSTATE_ERROR=8000,
+    /* The voice service state is out of service*/
+    LYNQ_E_STATE_OUT_OF_SERVICE=8001,
+    /* The voice service state is EMERGENCY_ONLY*/
+    LYNQ_E_STATE_EMERGENCY_ONLY=8002,
+    /* The radio power is power off*/
+    LYNQ_E_STATE_POWER_OFF=8003,
+    LYNQ_E_TIME_OUT=8004,
+    /*create or open sms DB fail */
+    LYNQ_E_SMS_DB_FAIL=8005,
+    /*Failed to execute sql statement*/
+    LYNQ_E_SMS_SQL_FAIL = 8006,
+    LYNQ_E_SMS_NOT_FIND = 8007,
+    /* The logic conflict*/
+    LYNQ_E_CONFLICT=9000,
+    /*Null anomaly*/
+    LYNQ_E_NULL_ANONALY=9001,
+     /*Invalid id anomaly*/
+    LYNQ_E_INVALID_ID_ANONALY=9002,
+#ifdef ECALL_SUPPORT
+    LYNQ_E_ECALL_BEING_RUNNING =9003,
+    LYNQ_E_ECALL_MSD_LENGTH_ERROR =9004,
+    LYNQ_E_ECALL_DAILING_NO_ANSWER =9005,
+#endif
+}LYNQ_E;
+
+/**@brief print solicied response msg's head information
+* @param head [IN]: head information
+* @return none
+*/
+void PrintHeader(lynq_resp_t& head)
+{
+    RLOGD("resp_type=%d,token=%d,request=%d,slot_id=%d,error_code=%d",head.resp_type,head.token,head.request,head.slot_id,head.error);
+}
+
+int GetHeader(Parcel* &p, lynq_resp_t& head, int request_id)
+{
+    RLOGD("get header");
+    if(p->dataAvail() > 0)
+    {
+        p->readInt32(&(head.resp_type));
+        p->readInt32(&(head.token));
+        p->readInt32(&(head.request));
+        RLOGD("%s %d", __FUNCTION__, head.request);
+        p->readInt32(&(head.slot_id));
+        p->readInt32(&(head.error));
+        PrintHeader(head);
+        return head.error;
+    }
+    else
+    {
+        return RESULT_ERROR;
+    }
+}
+
+int lynq_send_common_request(Parcel* p, int request_id, int argc, int cnt, const char* format,...)
+{
+    lynq_client_t client;
+    int ret;
+    int send_num;
+    int recv_num;
+    char res_data[MAX_LEN] = {0};
+    client.uToken = Global_uToken;
+    if(request_id == RIL_REQUEST_SCREEN_STATE)
+    {
+        client.request = LYNQ_REQUEST_CHANGE_SCREEN_STATE;
+    }
+    else if(request_id == RIL_REQUEST_RADIO_POWER)
+    {
+        client.request = LYNQ_REQUEST_CHANGE_RADIO;
+    }
+    else
+    {
+        client.request = request_id;
+    }
+    client.paramLen = argc;
+    bzero(client.param,MAX_LEN);
+    if(argc!=0)
+    {
+        va_list args;
+        va_start(args, format);
+        vsnprintf(client.param, MAX_LEN, format, args);
+        va_end(args);
+    }
+    RLOGD("uToken=%d,request=%d,paralen=%d,param=%s",client.uToken,client.request,client.paramLen,client.param);
+    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
+    send_num = sendto(sock_fd,&client,sizeof(client),0,(struct sockaddr *)&addr_serv,len_addr_serv);
+    if(send_num <= 0)
+    {
+        RLOGD("send request fail, send num is %d", send_num);
+        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+        return LYNQ_E_SEND_REQUEST_FAIL;
+    }
+    lynq_resp_t head;
+    head.request = -1;
+    for(int i = 0; i < cnt;)
+    {
+        recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN, 0, (struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
+        if(recv_num <= 0)
+        {
+            RLOGD("recv request fail, recv num is %d", recv_num);
+            pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+            return recv_num;
+        }
+        p->setData((uint8_t *)res_data,sizeof(char)*recv_num);
+        p->setDataPosition(0);
+        ret=GetHeader(p,head,request_id);
+        if(ret!=0)
+        {
+            RLOGD("%s %d get head error %d",__FUNCTION__,client.uToken,ret);
+            pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+            return ret;
+        }
+        if(request_id == head.request)
+        {
+            i++;
+        }
+    }
+    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
+    return ret;
+}
+
 int lynq_sim_init(int utoken){
     if(g_lynq_sim_init_flag == 1)
     {
@@ -159,104 +285,34 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(card_status == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0;
-    lynq_client_t client_t1;
-    memset(&client_t1, 0, sizeof(client_t1) );
-    client_t1.request = RIL_REQUEST_GET_SIM_STATUS;
-    client_t1.paramLen = 0;
-    client_t1.uToken = Global_uToken;
-    char res_data[MAX_LEN] = {0};
-    int len1 = sizeof(client_t1.param);
-    memset(client_t1.param, 0, sizeof(char)*MAX_LEN);
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN, 0, (struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    if(recv_num < 0 || recv_num == 0)
+    Parcel p;
+    int res = lynq_send_common_request(&p,RIL_REQUEST_GET_SIM_STATUS,0,1,"");
+    if(res != 0)
     {
-        RLOGD("recvfrom step2 fail:");
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return recv_num;
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    Parcel p;;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
-    {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        p.readInt32(card_status);
-    }
-    return error1;
+    p.readInt32(card_status);
+    return res;
 }
 
 int lynq_get_imsi(char buf[])
-{   
+{
     if(g_lynq_sim_init_flag == 0)
     {
         return -1;
     }
-    int ret = -1;
-    if(buf == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0;
-    lynq_client_t client_t1;
-    memset(&client_t1, 0, sizeof(client_t1) );
-    client_t1.request = RIL_REQUEST_GET_IMSI;
-    client_t1.paramLen = 0;
-    client_t1.uToken = Global_uToken;
-    char res_data[MAX_LEN] = {0};
-    memset(client_t1.param, 0, sizeof(client_t1.param));
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_GET_IMSI,0,1,"");
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        if(!error1){
-            char * test = lynqStrdupReadString(p);
-            memcpy(buf, test, strlen(test));
-            free(test);
-        }
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    char * test = lynqStrdupReadString(p);
+    memcpy(buf, test, strlen(test));
+    free(test);
+    return res;
 }
 
 
@@ -267,50 +323,17 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(buf == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0; 
-    client_t.request = RIL_REQUEST_QUERY_ICCID;
-    client_t.paramLen = 0;
-    client_t.uToken = Global_uToken;
-    char res_data[MAX_LEN] = {0};
-    memset(client_t.param, 0, sizeof(client_t.param));
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_QUERY_ICCID,0,1,"");
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        if(!error1){
-            char * test = lynqStrdupReadString(p);
-            memcpy(buf, test, strlen(test));
-            free(test);
-        }
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    char * test = lynqStrdupReadString(p);
+    memcpy(buf, test, strlen(test));
+    free(test);
+    return res;
 }
 
 int lynq_enable_pin(char *pin){
@@ -318,47 +341,14 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(pin == NULL)
-        return ret;
-    if(!strlen(pin))
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;  
-    char res_data[MAX_LEN] = {0};
-    client_t.request = RIL_REQUEST_SET_FACILITY_LOCK;
-    client_t.paramLen = 4;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%s %s %s %s\n", "SC", pin, "11", "1");
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_SET_FACILITY_LOCK,4,1,"%s %s %s %s\n", "SC", pin, "11", "1");
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    return res;
 }
 
 int lynq_sim_power(int mode)
@@ -367,53 +357,14 @@
     {
         return -1;
     }
-    int ret = -1;
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0;
-    char res_data[MAX_LEN] = {0};
-    client_t.request = RIL_REQUEST_OEM_HOOK_RAW;
-    client_t.paramLen = 1;
-    client_t.uToken = Global_uToken;
-    char buf[64] = {0};
-    sprintf(buf, "%s%d", "AT+ESIMPOWER=", mode);
-    sprintf(client_t.param, "%s\n", buf);
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return ret;
-    }
-     //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    int num = -1;
-    if(p.dataAvail() > 0)
-    {   
-        char test[128] = {0};
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        p.readInt32(&num);
-        if(num == -1){
-        }else{
-            p.read(test, num);
-            return error1;
-        }
+    int res = lynq_send_common_request(&p,RIL_REQUEST_OEM_HOOK_RAW,1,1,"%s%d", "AT+ESIMPOWER=", mode);
+    if(res != 0)
+    {
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    return res;
 }
 
 int lynq_disable_pin(char *pin){
@@ -421,44 +372,14 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(pin == NULL)
-        return ret;
-    int send_num = 0;  
-    int recv_num = 0;
-    char res_data[MAX_LEN] = {0};
-    client_t.request = RIL_REQUEST_SET_FACILITY_LOCK;
-    client_t.paramLen = 4;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%s %s %s %s\n", "SC", pin, "11", "0");
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_SET_FACILITY_LOCK,4,1,"%s %s %s %s\n", "SC", pin, "11", "0");
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    return res;
 }
 
 int lynq_query_pin_lock(char *pin,int buf[]){
@@ -466,55 +387,25 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(pin == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0; 
-    client_t.request = RIL_REQUEST_QUERY_FACILITY_LOCK;
-    client_t.paramLen = 3;
-    client_t.uToken = Global_uToken;
-    char res_data[MAX_LEN] = {0};
-    sprintf(client_t.param, "%s %s %s\n", "SC", pin, "11");
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);  
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    int num = -1;
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_QUERY_FACILITY_LOCK,3,1,"%s %s %s\n", "SC", pin, "11");
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        p.readInt32(&num);
-        if(num > 0){
-            int *test = (int *)calloc(1, sizeof(int)*num);
-            for(int i =0; i <num; i++){
-                p.readInt32(&test[i]);
-                buf[i] = test[i];
-            }
-            free(test);
-        }
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    int num = -1;
+    p.readInt32(&num);
+    if(num > 0)
+    {
+        int *test = (int *)calloc(num, sizeof(int));
+        for(int i =0; i <num; i++){
+            p.readInt32(&test[i]);
+            buf[i] = test[i];
+        }
+        free(test);
+    }
+    return res;
 }
 
 int lynq_verify_pin(char *pin){
@@ -522,45 +413,14 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(pin == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    char res_data[MAX_LEN] = {0};
-    int len = 0; 
-    client_t.request = RIL_REQUEST_ENTER_SIM_PIN;
-    client_t.paramLen = 1;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%s\n", pin);
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-   //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_ENTER_SIM_PIN,1,1,"%s\n", pin);
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    return res;
 }
 
 int lynq_change_pin(char *old_pin, char *new_pin){
@@ -568,49 +428,21 @@
     {
         return -1;
     }
-    int ret = -1;
+    int res = -1;
     if(old_pin == NULL || new_pin == NULL)
-        return ret;
+        return res;
     if(!strlen(new_pin))
-        return ret;
+        return res;
     if(!strlen(old_pin))
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    char res_data[MAX_LEN] = {0};
-    int len = 0; 
-    client_t.request = RIL_REQUEST_CHANGE_SIM_PIN;
-    client_t.paramLen = 2;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%s %s\n", old_pin, new_pin);
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
+        return res;
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    res = lynq_send_common_request(&p,RIL_REQUEST_CHANGE_SIM_PIN,2,1,"%s %s\n", old_pin, new_pin);
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    return res;
 }
 
 int lynq_unlock_pin(char *puk, char *pin){
@@ -618,45 +450,16 @@
     {
         return -1;
     }
-    int ret = -1;
     if(puk == NULL || pin == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    char res_data[MAX_LEN] = {0};
-    int len = 0; 
-    client_t.request = RIL_REQUEST_ENTER_SIM_PUK;
-    client_t.paramLen = 2;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%s %s\n", puk, pin);
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
+        return -1;
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_ENTER_SIM_PUK,2,1,"%s %s\n", puk, pin);
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    return res;
 }
 
 static void delete_char(char str[],char target){
@@ -726,55 +529,24 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(buf == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0;
-    char res_data[MAX_LEN] = {0};
-    client_t.request = RIL_REQUEST_OEM_HOOK_RAW;
-    client_t.paramLen = 1;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%s\n", "AT+CNUM");
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return ret;
-    }
-     //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    int num = -1;
-    if(p.dataAvail() > 0)
-    {   
-        char test[128] = {0};
-        char *argv[5] = {0};
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        p.readInt32(&num);
-        if(num == -1){
-        }else{
-            p.read(test, num);
-            num = parse_param(test, argv, buf);
-            return num;
-        }
+    int res = lynq_send_common_request(&p,RIL_REQUEST_OEM_HOOK_RAW,1,1,"%s\n", "AT+CNUM");
+    if(res != 0)
+    {
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    int num = -1;
+    p.readInt32(&num);
+    char test[128] = {0};
+    char *argv[5] = {0};
+    if(num != -1)
+    {
+        p.read(test, num);
+        num = parse_param(test, argv, buf);
+        return num;
+    }
+    return res;
 }
 
 int lynq_get_imei(char buf[])
@@ -783,147 +555,68 @@
     {
         return -1;
     }
-    int ret = -1;
-    if(buf == NULL)
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0;
-    lynq_client_t client_t1;
-    memset(&client_t1, 0, sizeof(client_t1) );
-    client_t1.request = RIL_REQUEST_DEVICE_IDENTITY;
-    client_t1.paramLen = 0;
-    client_t1.uToken = Global_uToken;
-    char res_data[MAX_LEN] = {0};
-    memset(client_t1.param, 0, sizeof(client_t1.param));
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
-    }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    int num = 0;
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_DEVICE_IDENTITY,0,1,"");
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        if(!error1){
-            p.readInt32(&num);
-            char * test = lynqStrdupReadString(p);          
-            memcpy(buf, test, strlen(test));
-            free(test);
-        }
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    int num = 0;
+    p.readInt32(&num);
+    char * test = lynqStrdupReadString(p);
+    memcpy(buf, test, strlen(test));
+    free(test);
+    return res;
 }
 
 int lynq_get_imei_and_sv(char imei[],char sv[])
 {
-    RLOGD("%s called",__func__);  
     if(g_lynq_sim_init_flag == 0)
     {
-        RLOGD("%s init_flag is %d",__func__,g_lynq_sim_init_flag);  
-        return -2;
-    }
-    int ret = -1;
-    if(imei == NULL || sv== NULL)
-    {
-        RLOGD("%s imei is NULL or sv is NULL",__func__);  
-        return ret;
-    }
-    
-    int send_num = 0;
-    int recv_num = 0;
-    int len = 0;
-    lynq_client_t client_t1;
-    memset(&client_t1, 0, sizeof(client_t1) );
-    client_t1.request = RIL_REQUEST_DEVICE_IDENTITY;
-    client_t1.paramLen = 0;
-    client_t1.uToken = Global_uToken;
-    char res_data[MAX_LEN] = {0};
-    memset(client_t1.param, 0, sizeof(client_t1.param));
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t1, sizeof(client_t1), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)  
-    {  
-        RLOGD("%s sendto error: %d",__func__,send_num);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    //get data msg
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("%s recvfrom step2 fail:%d",__func__,recv_num);
-        return recv_num;
+        return -1;
     }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    int num = 0;
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_DEVICE_IDENTITY,0,1,"");
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        if(!error1){
-            p.readInt32(&num);
-            if(num<2)
-            {
-                RLOGD("%s num %d error, should greater than 1",__func__,num);
-                return -1;
-            }
-            char *resp[2]={NULL,NULL};
-            int i;
-            for(i=0;i<2;i++)
-            {
-                resp[i]= lynqStrdupReadString(p);
-                if(resp[i]==NULL)
-                {
-                    break;
-                }
-            }            
-
-            if(i==2){           
-                memcpy(imei, resp[0], strlen(resp[0])+1);
-                memcpy(sv, resp[1], strlen(resp[1])+1);
-            }
-            else 
-            {
-                RLOGD("%s resp[%d] is null",__func__,i);
-            }             
-
-            for(i=0;i<2;i++)
-            {
-                if(resp[i]!=NULL)
-                {
-                    free(resp[i]);            
-                }            
-            }                        
-            return i==2? 0:-1;
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
+    }
+    int num = 0;
+    p.readInt32(&num);
+    if(num<2)
+    {
+        RLOGD("%s num %d error, should greater than 1",__func__,num);
+        return -1;
+    }
+    char *resp[2]={NULL,NULL};
+    int i;
+    for(i=0;i<2;i++)
+    {
+        resp[i]= lynqStrdupReadString(p);
+        if(resp[i]==NULL)
+        {
+            break;
         }
-    }    
-    RLOGD("%s called failed %d",__func__,error1);  
-    return error1;
+    }
+    if(i==2){
+        memcpy(imei, resp[0], strlen(resp[0])+1);
+        memcpy(sv, resp[1], strlen(resp[1])+1);
+    }
+    else
+    {
+        RLOGD("%s resp[%d] is null",__func__,i);
+    }
+    for(i=0;i<2;i++)
+    {
+        if(resp[i]!=NULL)
+        {
+            free(resp[i]);
+        }
+    }
+    return i==2? 0:-1;
+
 }
 
 static int judge(int slot){
@@ -941,16 +634,16 @@
     {
         return -1;
     }
-    int ret = -1;
     if(!judge(slot))
-        return ret;
+        return -1;
     int send_num = 0;
+    lynq_client_t client_t;
     client_t.request = LYNQ_REQUEST_SET_DEFAULT_SIM_ALL;
     client_t.paramLen = 1;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%d\n", slot);
     pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv); //because ril of id = -1
     if(send_num < 0)  
     {  
         RLOGD("function %s sendto error:", __FUNCTION__);  
@@ -969,74 +662,16 @@
     {
         return -1;
     }
-
-    int ret = -1;
     if(!judge(num))
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int error[2];
-    char res_data[MAX_LEN] = {0};
-
-    //change the first screen
-    client_t.request = LYNQ_REQUEST_CHANGE_SCREEN_STATE; //8014
-    client_t.paramLen = 1;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%d\n", num);
-
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)
+        return -1;
+    Parcel p;
+    int res = lynq_send_common_request(&p,RIL_REQUEST_SCREEN_STATE,1,2,"%d\n",num);
+    if(res != 0)
     {
-        RLOGD("sendto error:\n");
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    for(int i=0;i<2;i++)
-    {
-        recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-        if(recv_num < 0 || recv_num == 0)
-        {
-            pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);//recvfrom fail
-            RLOGD("screen recvform error\n");
-            return errno;
-        }
-        if(i == 1)
-        {
-            pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-            RLOGD("recvfrom success\n");
-        }
-        Parcel p;
-        p.setData((uint8_t *)res_data,sizeof(char)*recv_num);
-        p.setDataPosition(0);
-        if(p.dataAvail() > 0)
-        {
-            p.readInt32(&resp_type);
-            p.readInt32(&solicited_token);
-            p.readInt32(&request);
-            p.readInt32(&slot_id);
-            p.readInt32(&error1);
-            error[i] = error1;//change screen state result
-        }
-    }
-    
-    if((error[0] != 0) || (error[1] != 0))
-    {
-        RLOGD("error[0] = %d errpr[1] = %d\n",error[0], error[1]);
-        if(error[0] != 0)
-        {
-            return error[0];
-        }
-        else
-        {
-            return error[1];
-        }
-    }
-    else
-    {
-        return 0;
-    }
-
+    return res;
 }
 
 /**@breif    change screen state
@@ -1049,73 +684,16 @@
     {
         return -1;
     }
-
-    int ret = -1;
     if(!judge(num))
-        return ret;
-    int send_num = 0;
-    int recv_num = 0;
-    int error[2];
-    char res_data[MAX_LEN] = {0};
-    //change the first screen
-    client_t.request = LYNQ_REQUEST_CHANGE_RADIO; //8015
-    client_t.paramLen = 1;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%d\n", num);
-
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)
+        return -1;
+    Parcel p;
+    int res = lynq_send_common_request(&p,RIL_REQUEST_RADIO_POWER,1,2,"%d\n",num);
+    if(res != 0)
     {
-        RLOGD("sendto error:\n");
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    for(int i=0;i<2;i++)
-    {
-        recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-        if(recv_num < 0 || recv_num == 0)
-        {
-            pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);//recvfrom fail
-            RLOGD("screen recvform error\n");
-            return errno;
-        }
-        if(i == 1)
-        {
-            pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-            RLOGD("recvfrom success\n");
-        }
-        Parcel p;
-        p.setData((uint8_t *)res_data,sizeof(char)*recv_num);
-        p.setDataPosition(0);
-        if(p.dataAvail() > 0)
-        {
-            p.readInt32(&resp_type);
-            p.readInt32(&solicited_token);
-            p.readInt32(&request);
-            p.readInt32(&slot_id);
-            p.readInt32(&error1);
-            error[i] = error1;//change screen state result
-        }
-    }
-    
-    if((error[0] != 0) || (error[1] != 0))
-    {
-        RLOGD("error[0] = %d errpr[1] = %d\n",error[0], error[1]);
-        if(error[0] != 0)
-        {
-            return error[0];
-        }
-        else
-        {
-            return error[1];
-        }
-    }
-    else
-    {
-        return 0;
-    }
-
+    return res;
 }
 
 /**
@@ -1187,54 +765,23 @@
     {
         return -1;
     }
-    int ret = -1;
     if(judge_illegal(list, path, data, pin2, aidPtr, sw, simResponse))
     {
-        return ret;
-    }
-    int send_num = 0;
-    int recv_num = 0;
-    char res_data[MAX_LEN] = {0};
-    client_t.request = RIL_REQUEST_SIM_IO;
-    client_t.paramLen = 9;
-    client_t.uToken = Global_uToken;
-    sprintf(client_t.param, "%d %d %s %d %d %d %s %s %s\n", list[0], list[1], path, list[2], list[3], list[4], data_buf, pin2_buf, aidPtr_buf);
-    pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
-    if(send_num < 0)
-    {
-        RLOGD("function %s sendto error:", __FUNCTION__);
-        pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-        return send_num;
-    }
-    recv_num = recvfrom(sock_fd,res_data,sizeof(char)*MAX_LEN,0,(struct sockaddr *)&addr_serv,(socklen_t*)&len_addr_serv);
-    pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    if(recv_num < 0 || recv_num == 0)
-    {
-        RLOGD("recvfrom step2 fail:");
-        return recv_num;
+        return -1;
     }
     Parcel p;
-    p.setData((uint8_t *)res_data,sizeof(char)*recv_num); // p.setData((uint8_t *) buffer, buflen);
-    p.setDataPosition(0);
-    if(p.dataAvail() > 0)
+    int res = lynq_send_common_request(&p,RIL_REQUEST_SIM_IO,9,1,"%d %d %s %d %d %d %s %s %s\n", list[0], list[1], path, list[2], list[3], list[4], data_buf, pin2_buf, aidPtr_buf);
+    if(res != 0)
     {
-        p.readInt32(&resp_type);
-        p.readInt32(&solicited_token);
-        p.readInt32(&request);
-        p.readInt32(&slot_id);
-        p.readInt32(&error1);
-        if(!error1)
-        {
-            p.readInt32(&sw[0]);
-            p.readInt32(&sw[1]);
-            char * test = lynqStrdupReadString(p);
-            memcpy(simResponse, test, strlen(test));
-            free(test);
-        }
-
+        RLOGD("function %s execute error", __FUNCTION__);
+        return res;
     }
-    return error1;
+    p.readInt32(&sw[0]);
+    p.readInt32(&sw[1]);
+    char * test = lynqStrdupReadString(p);
+    memcpy(simResponse, test, strlen(test));
+    free(test);
+    return res;
 }
 
 static void wait_reset_mipc_response(int *response)
@@ -1262,12 +809,13 @@
     }
     int ret = -1;
     int send_num = 0;
+    lynq_client_t client_t;
     client_t.request = RIL_REQUEST_OEM_HOOK_RAW;
     client_t.paramLen = 1;
     client_t.uToken = Global_uToken;
     sprintf(client_t.param, "%s\n", "AT+LRSTMD");
     pthread_mutex_lock(&g_lynq_sim_sendto_mutex);
-    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);
+    send_num = sendto(sock_fd, &client_t, sizeof(client_t), 0, (struct sockaddr *)&addr_serv, len_addr_serv);//because response not by ril callback
     if(send_num < 0)  
     {  
         RLOGD("function %s sendto error:", __FUNCTION__);
@@ -1276,7 +824,7 @@
     }
     wait_reset_mipc_response(&ret);
     pthread_mutex_unlock(&g_lynq_sim_sendto_mutex);
-    RLOGD("function %d ret %d",__FUNCTION__, ret);
+    RLOGD("function %s ret %d",__FUNCTION__, ret);
     return ret;
 }
 
@@ -1328,60 +876,31 @@
 
 int lynq_get_version(char buf[])
 {
-    FILE * fp;
+    FILE *fp;
     char buffer[128];
     sprintf(buffer, "%s", "uci get lynq_uci_ro.lynq_version.LYNQ_SW_VERSION");
     fp = popen(buffer, "r");
-    fgets(buffer, sizeof(buffer), fp);
+    if(NULL == fp)
+    {
+        RLOGE("popen failed !");
+        return -1;
+    }
+    if(NULL != fgets(buffer, sizeof(buffer), fp))
+    {
+        if('\n' == buffer[strlen(buffer) - 1])
+        {
+            buffer[strlen(buffer) - 1] = '\0';
+        }
+    }
+    else
+    {
+        RLOGE("fgets failed !");
+        pclose(fp);
+        return -1;
+    }
     memcpy(buf, buffer, strlen(buffer));
     buf[strlen(buffer)] = '\0';
     pclose(fp);
     return 0;
 }
-#if FLAG_TESS
-int lynq_query_operator(char buf[]){
-    int32_t token = -1;
-    if(buf == NULL)
-        return token;
-    char msg_imsi[20] = {0};
-    memset(msg_imsi,0,sizeof(msg_imsi));
-    token = lynq_get_imsi(msg_imsi);
-    if(strlen(msg_imsi) != 0){
-        FindOperator *ope_command = NULL;
-        ope_command = find_ope_command(msg_imsi, findOperator);
-        if(ope_command){
-            memcpy(buf, ope_command->buf, strlen(ope_command->buf));
-            buf[strlen(ope_command->buf)] = '\0';
-        }
-        else{
-            /*more*/
-            char mccmnc[5] = {0};
-            memcpy(buf, msg_imsi, 5);
-            buf[5] = '\0';
-            /*more*/
-        }
-        return token;
-    }
-    else{
-        //msg->base.e = err;
-        const char *test = "please insert sim card";
-        memcpy(buf, test, strlen(test));
-        return token;
-    }
-}
-FindOperator findOperator[] = {
-#include "operator.h"
-};
 
-static FindOperator*find_ope_command (char *name,FindOperator *Class){
-    if(name == NULL || Class == NULL){
-        return ((FindOperator *)NULL);
-    }
-    register int i;
-    for (i = 0; Class[i].MCCMCN; i++)
-        if (strncmp (name, Class[i].MCCMCN, 5) == 0)
-            return (&Class[i]);
-    return ((FindOperator *)NULL);
-}
-
-#endif
diff --git a/LYNQ_PUBLIC/lib/liblynq-sms/lynq_module_socket.cpp b/LYNQ_PUBLIC/lib/liblynq-sms/lynq_module_socket.cpp
index d7c654e..216ed02 100755
--- a/LYNQ_PUBLIC/lib/liblynq-sms/lynq_module_socket.cpp
+++ b/LYNQ_PUBLIC/lib/liblynq-sms/lynq_module_socket.cpp
@@ -24,7 +24,7 @@
 #define LYNQ_REQUEST_PARAM_BUF 8192

 #define LYNQ_REC_BUF 8192

 

-#define USER_LOG_TAG "LYNQ_NETWORK"

+#define USER_LOG_TAG "LYNQ_SMS"

 

 typedef struct{

     int uToken;

@@ -319,7 +319,7 @@
     char urc_data[LYNQ_REC_BUF];

     int res = 0;

     lynq_head_t* phead;

-   

+    int level,index,size;

     LYINFLOG("urc recv thread is running");

     while(module_urc_status)

     {

@@ -330,7 +330,7 @@
             LYERRLOG("thread_urc_recv step2 fail: res is %d",res);

             continue;

         }

-        LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

+        LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

         phead=(lynq_head_t*) urc_data;

         if(is_support_urc(phead->urcid)==false)

         {

@@ -342,8 +342,8 @@
             LYERRLOG("new parcel failure!!!");

             continue;

         }

-        LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

-        int level,index,size;

+        LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

+        

         if(urc_data_is_in_shm_data(phead->resp_type,level,index,size))

         {

             LYINFLOG("__FUNCTION__ %s __LINE__ %d,use share memory\n", __FUNCTION__, __LINE__);

@@ -367,14 +367,14 @@
             s_recv_urc_parcel_list.push_back(urc_p);            

             BLOCK_WAKEUP_PROCESS_URC_MSG();

             BLOCK_PROCESS_URC_MSG_UNLOCK();

-            LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

+            LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

         }

         else 

         {

             delete urc_p;

             urc_p = NULL;

         }

-        LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);        

+        LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);        

     }

     LYINFLOG("urc recv thread ended");

     return NULL;

@@ -397,9 +397,9 @@
         BLOCK_PROCESS_URC_MSG_LOCK();

         while(s_recv_urc_parcel_list.empty())

         {

-            LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

+            LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

             BLOCK_WAIT_PROCESS_URC_MSG();

-            LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

+            LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

         }  

         iter=s_recv_urc_parcel_list.begin();

         urc_p=(*iter);

@@ -408,11 +408,11 @@
         urc_p->setDataPosition(0);

         if(urc_p->dataAvail()>0)

         {

-            LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

+            LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

             pthread_mutex_lock(&s_urc_mutex);

             urc_msg_process(urc_p);            

             pthread_mutex_unlock(&s_urc_mutex);

-            LYINFLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

+            LYDBGLOG("__FUNCTION__ %s __LINE__ %d\n", __FUNCTION__, __LINE__);

         }

         delete urc_p;

         urc_p = NULL;

diff --git a/LYNQ_PUBLIC/lib/liblynq-sms/lynq_sms.cpp b/LYNQ_PUBLIC/lib/liblynq-sms/lynq_sms.cpp
index 73cd37f..f0b2bbd 100755
--- a/LYNQ_PUBLIC/lib/liblynq-sms/lynq_sms.cpp
+++ b/LYNQ_PUBLIC/lib/liblynq-sms/lynq_sms.cpp
@@ -86,7 +86,7 @@
     }

     g_module_init_flag = MODULE_SWITCHING;

 

-    LYLOGSET(LOG_DEBUG);

+    LYLOGSET(LOG_INFO);

     LYLOGEINIT(USER_LOG_TAG);   

 

     g_module_Global_uToken = uToken;

@@ -132,7 +132,7 @@
 int lynq_send_sms(char telephony_num[TELEPHONE_NUM_LEN], int charset, char *msg, int msglen)

 {

     LYINFLOG("charset is %d, msglen %d\n", charset, msglen);

-    if(msglen > MSG_MAX_LEN || msglen <= 0)

+    if(msglen > MSG_MAX_LEN || msglen < 0)

     {

         LYERRLOG("msglen out of the range");

         return LYNQ_E_SMS_MSGLEN_OUT_OF_RANGE;

diff --git a/LYNQ_PUBLIC/lib/liblynq-uci/lynq_uci.config b/LYNQ_PUBLIC/lib/liblynq-uci/lynq_uci.config
index 501a034..e1a895f 100755
--- a/LYNQ_PUBLIC/lib/liblynq-uci/lynq_uci.config
+++ b/LYNQ_PUBLIC/lib/liblynq-uci/lynq_uci.config
@@ -26,6 +26,9 @@
 

 config  lynq_rndis  'lynq_rndis'

         option initiate '0'

+	

+config  rndis_status 'rndis'

+        option status '0'

 

 config  debug_mode_status 'debug_mode'

         option rild_debug_status '0'