[Feature][T8TSK-81]Merge MR3.0 New changes to commit ID:2b1db87cbf754219ab0e1cb48c663067ed55b7b3;GSW commit ID:4b1cf725e8037c2d878c85388384a0f5c8129274
Change-Id: Icbf9845e92b3564ad7f1d127c13c896b93a42c5b
diff --git a/src/lynq/lib/liblynq-at-extension/include/lib_at/lynq_at.h b/src/lynq/lib/liblynq-at-extension/include/lib_at/lynq_at.h
index 0049eb1..1a17fe9 100755
--- a/src/lynq/lib/liblynq-at-extension/include/lib_at/lynq_at.h
+++ b/src/lynq/lib/liblynq-at-extension/include/lib_at/lynq_at.h
@@ -10,9 +10,9 @@
 
 #ifndef __LYNQ_AT__
 #define __LYNQ_AT__
-//#ifdef __cplusplus
-//extern "C" {
-//#endif
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /**
  * @brief
@@ -31,8 +31,8 @@
  */
 int lynq_reg_third_at(const char *ext_at, LYNQ_AT_CALLBACK callback);
 
-//#ifdef __cplusplus
-//}
-//#endif
+#ifdef __cplusplus
+}
+#endif
 
 #endif
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-at-extension/lynq_at.cpp b/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
index 8785310..80c6588 100755
--- a/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
+++ b/src/lynq/lib/liblynq-at-extension/lynq_at.cpp
@@ -95,7 +95,7 @@
     if (connect(sockfd, (struct sockaddr *) &addr_server, sizeof(struct sockaddr_un)) < 0)
     {
         close(sockfd);
-        LYDBGLOG("Can't connect to server side, path: %s, errno:%d", name, errno);
+        LYDBGLOG("Can't connect to server side, path: %s, %s", name, strerror(errno));
         return -1;
     }
     LYINFLOG("[%d][%s] connect %s success",LINE,FUNC,name);
@@ -120,40 +120,43 @@
         LYDBGLOG("lose data when send to atci service. errno = %d", errno);
         return false;
     }
-    LYDBGLOG("send to app demo: %s", msg);
+    LYDBGLOG("client send to app demo: %s", msg);
     return true;
 }
 
 int atsvc_cmd_recv(int fd, char *buf, int len)
 {
+    LYINFLOG("[%d][%s] enter",LINE,FUNC);
     int ret = 0;
-    fd_set rfds;
-    //FD_CLR(fd, &rfds);
-    FD_SET(fd, &rfds);
-    ret = select(fd + 1, &rfds, NULL, NULL, NULL);
-    if (ret <= 0)
-    {
-        LYDBGLOG("acti_cmd_recv select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
-        return SOCKET_FAIL;
-    }
-    if (FD_ISSET(fd, &rfds))
-    {
+    // fd_set rfds;
+    // //FD_CLR(fd, &rfds);
+    // FD_SET(fd, &rfds);
+    // ret = select(fd + 1, &rfds, NULL, NULL, NULL);
+    // if (ret <= 0)
+    // {
+    //     LYDBGLOG("acti_cmd_recv client select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+    //     return SOCKET_FAIL;
+    // }
+    // if (FD_ISSET(fd, &rfds))
+    // {
+        LYDBGLOG("[%d][%s] recv before",LINE,FUNC);
         ret = recv(fd, buf, len, 0);
+        LYDBGLOG("[%d][%s] recv after",LINE,FUNC);
         if (ret < 0)
         {
-            LYDBGLOG("acti_cmd_recv select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+            LYDBGLOG("acti_cmd_recv client select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
             return SOCKET_FAIL;
         }
         else if(ret == 0)
         {
-            LYDBGLOG("acti_cmd_recv recv error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+            LYDBGLOG("acti_cmd_recv client recv error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
             return SOCKET_ZERO;
     }
-    else
-    {
-      //buf[ret] = '\0';
-    }
-  }
+    // else
+    // {
+    //   //buf[ret] = '\0';
+    // }
+//   }
   return SOCKET_SUCC;
 }
 /**
@@ -179,6 +182,7 @@
     fd = socket_local_client(AT_EXTERSION_SOCKET_NAME);
     if(fd <= 0)
     {
+        LYDBGLOG("socket_local_client  fail\n");
         connect_state = false;
         pthread_mutex_unlock(&s_startupMutex);
         return NULL;
@@ -186,6 +190,7 @@
     int len_buf = strlen(buffer_at);
     if(!send_msg_to_service(fd,buffer_at,len_buf))
     {
+        LYDBGLOG("send_msg_to_service  fail\n");
         connect_state = false;
         pthread_mutex_unlock(&s_startupMutex);
         return NULL;
diff --git a/src/lynq/lib/liblynq-call/lynq_call.cpp b/src/lynq/lib/liblynq-call/lynq_call.cpp
index d1e2293..741220e 100755
--- a/src/lynq/lib/liblynq-call/lynq_call.cpp
+++ b/src/lynq/lib/liblynq-call/lynq_call.cpp
@@ -422,12 +422,12 @@
     {
         update=0;       
         pthread_cond_wait(&s_notice_get_call_list_cond, &s_notice_get_call_list_mutex);
-        LYDBGLOG("triggerGetCallList event!!!");
+        LYINFLOG("triggerGetCallList event %p!!!", pthread_self());
         memset(call_list,0,sizeof(call_list));
         ret = lynq_get_current_call_list(call_list);
         if(ret != RESULT_OK)
         {
-            LYDBGLOG("get current call list failure!!!");          
+            LYERRLOG("get current call list failure!!!");
             continue;
         }
         LYINFLOG("++++++++++++++triggerGetCallList++++++++++++++");
@@ -595,10 +595,11 @@
 
 void lynqNoticeGetModuleCallList()
 {
+    LYINFLOG("RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED send start");
     pthread_mutex_lock(&s_notice_get_call_list_mutex);
     pthread_cond_signal(&s_notice_get_call_list_cond);
     pthread_mutex_unlock(&s_notice_get_call_list_mutex);
-    
+    LYINFLOG("RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED send end");
 }
 
 #if 0
diff --git a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp b/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
index 4b6f020..8d012da 100755
--- a/src/lynq/lib/liblynq-sms/lynq_module_socket.cpp
+++ b/src/lynq/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/src/lynq/lib/liblynq-sms/lynq_sms.cpp b/src/lynq/lib/liblynq-sms/lynq_sms.cpp
index 46f2119..ddf12b9 100755
--- a/src/lynq/lib/liblynq-sms/lynq_sms.cpp
+++ b/src/lynq/lib/liblynq-sms/lynq_sms.cpp
@@ -87,7 +87,7 @@
     }
     g_module_init_flag = MODULE_SWITCHING;
 
-    LYLOGSET(LOG_DEBUG);
+    LYLOGSET(LOG_INFO);
     LYLOGEINIT(USER_LOG_TAG);   
 
     g_module_Global_uToken = uToken;
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index d0c3c32..25e429b 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -370,7 +370,11 @@
         usleep(300*1000);
         system("wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=ap0 disconnect");
     }
-
+    ret = system("wl -i wlan0 PM 0");
+    if( ret != 0)
+    {
+        printf("Set sta PM work mode to 0 fail,ret is%d",ret);
+    }
     if (g_ap_watcher_pid == 0 ) {
         ret=pthread_create(&g_ap_watcher_pid,NULL,APWatcherThreadProc,NULL);
         if(ret<0){
@@ -593,7 +597,7 @@
     if (NULL == mac || NULL == ip)
         return -1;
     memset(ip, 0, ip_len);
-    sprintf(cmd, "ip neigh | grep \"lladdr\" | grep \"tether\" | grep \"%s\" | head -1 | awk '{print $1}'", mac);
+    sprintf(cmd, "ip n s | grep \"lladdr\" | grep \"%s\" | head -1 | awk '{print $1}'", mac);
     ret = exec_cmd(cmd, ip, ip_len);
     p = strchr(ip, '\n');
     if (NULL != p)
@@ -758,7 +762,7 @@
         else if (strstr( flag, "NONE") != NULL) {
             return LYNQ_WIFI_AUTH_OPEN;
         }
-        else if (strcmp( flag, "[ESS]") == 0) {
+        else if (strcmp( flag, "[ESS]") == 0 || strcmp( flag,"[WPS][ESS]") == 0) {
             return LYNQ_WIFI_AUTH_OPEN;
         }
     }
@@ -930,6 +934,27 @@
 
     return 0;
 }
+
+static int lynq_check_frequencyby_country_code(int input_frequency)
+{
+    char str_cnc[]="CN";
+    char str_dest[20]="";
+
+    if( lynq_get_country_code(1,str_dest) != 0 )
+    {
+        printf("get country_code error\n");
+	return -1;
+    }
+    if( strncmp(str_dest,str_cnc,2) != 0 )
+    {
+        return 0;
+    }else if( 2473 < input_frequency && input_frequency < 5744)
+    {
+        printf("input frequency is bad\n");
+	return -1;
+    } 
+    return 0;
+}
 int lynq_wifi_ap_frequency_set(lynq_wifi_index_e idx,int lynq_wifi_frequency)
 {
     int check;
@@ -944,6 +969,13 @@
         printf("do check frequency error\n");
         return -1;
     }
+    check = lynq_check_frequencyby_country_code(lynq_wifi_frequency);
+    if(check != 0)
+    {
+        printf("do check frequency error\n");
+        return -1;
+    }
+
     if (lynq_check_network_number(idx, CTRL_AP, AP_NETWORK_0) != 0)
     {
         return -1;
@@ -1000,7 +1032,7 @@
         }
         case LYNQ_WIFI_BANDWIDTH_HT40:
 		{
-            char lynq_cmd_bandwith[MAX_CMD]="wl chanspec 153u";
+            char lynq_cmd_bandwith[MAX_CMD]="wl chanspec 149/40";
             sprintf(lynq_cmd_bandwith, "wl chanspec ");
             system("wl down");
             if (system(lynq_cmd_bandwith) != 0 ){
@@ -1011,7 +1043,7 @@
 		}
         case LYNQ_WIFI_BANDWIDTH_HT80:
 		{
-            char lynq_cmd_bandwith[MAX_CMD]="wl chanspec 36/80";
+            char lynq_cmd_bandwith[MAX_CMD]="wl chanspec 149/80";
             system("wl down");
             if (system(lynq_cmd_bandwith) != 0 ){
                 return -1;
@@ -1555,6 +1587,9 @@
              break;
         }
 
+        if (p == NULL)
+            return -1;
+
         ssid = strstr(p, "ssid=");
         if (ssid != NULL) {
             ssid += strlen("ssid=");
@@ -1604,9 +1639,12 @@
             continue;
         }
 
-        strcpy(password, p);
+        if (*p == '\"')
+            p++;
+        strncpy(password, p, 64);
 
-        while(*password != '\0') {
+        p = password;
+        while(password - p < 64 && *password != '\0') {
             if (*password == '\"') {
                 *password = '\0';
                 break;
@@ -2243,8 +2281,14 @@
 
     CHECK_WPA_CTRL(CTRL_STA);
 
-    DO_OK_FAIL_REQUEST(lynq_scan_cmd);
     g_sta_scan_finish_flag = 0;
+    DO_REQUEST(lynq_scan_cmd);
+    if (reply_len >=9 && memcmp(cmd_reply, "FAIL-BUSY", 9) == 0 ) {
+        return 0;
+    } else if (reply_len >=2 && memcmp(cmd_reply, "OK", 2) != 0) {
+        g_sta_scan_finish_flag = 1;
+        return -1;
+    }
 
     return 0;
 }
diff --git a/src/lynq/lib/libpoweralarm/libpoweralarm.c b/src/lynq/lib/libpoweralarm/libpoweralarm.c
index 0cc3eb8..162484e 100644
--- a/src/lynq/lib/libpoweralarm/libpoweralarm.c
+++ b/src/lynq/lib/libpoweralarm/libpoweralarm.c
@@ -42,7 +42,7 @@
     
     time_buff = (char*)malloc(100);
     bzero(time_buff,100);
-
+    system("hwclock -w -f /dev/rtc0");
     sprintf(time_buff,"echo +%ld > %s",sec,RTCFILE_POWERALARM); //write formatted data into time_buff
     system(time_buff);
     ALOGI(time_buff);
@@ -75,7 +75,7 @@
     
     time_buff = (char*)malloc(100);
     bzero(time_buff,100);
-
+    system("hwclock -w -f /dev/rtc0");
     sprintf(time_buff,"echo +%ld > %s",sec,RTCFILE_WAKEALARM); //write formatted data into time_buff
     system(time_buff);
     ALOGI(time_buff);
diff --git a/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c b/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c
index 3cd6be5..5952c5a 100755
--- a/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c
+++ b/src/telephonyware/3.0/atcid/atci/src/lynq-private/lynq_atsvc_controller.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <unistd.h>
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <sys/types.h>
@@ -22,7 +23,7 @@
 char register_atcmd_buff[SOCKET_BUF_SIZE] = {0};
 char *white_list[] = {"AT","ATD","ATV","ATA","ATE","ATH","ATL","ATI","ATP","ATO","ATQ",NULL};
 int g_atsvc_socket_fd = 0;
-int g_atsvc_client_connect = 0;
+int g_atsvc_client_connect = -1;
 //struct sockaddr_in server_addr;
 //struct sockaddr_in lynqClient_addr;
 static pthread_mutex_t s_startupMutex = PTHREAD_MUTEX_INITIALIZER;
@@ -30,6 +31,8 @@
 struct sockaddr_un g_remote_addr = {0};
 struct sockaddr_un g_local_addr = {0};
 
+int g_create_socket = 0;
+
 typedef enum
 {
     INIT_SUCCESS=0,
@@ -101,14 +104,27 @@
             }
             if (remove(socket_name) == -1 && errno != ENOENT)
             { 
-                ALOGD("remove-%s fail and errno:%d", socket_name,errno); 
+                ALOGD("remove-%s fail and errno:%d", socket_name,errno);
+            }
+            while(access(socket_name, R_OK)==0)
+            {
+                ALOGD("%s still exist", socket_name);
+                usleep(10);
             }
             ALOGD("remove %s", socket_name);
             local_addr->sun_family = AF_UNIX;
             sprintf(local_addr->sun_path, socket_name);
-            if(bind(socket_fd, (struct sockaddr *)local_addr, sizeof(struct sockaddr_un)) == -1)
+            // local_addr->sun_family = AF_UNIX;
+            // memset(local_addr->sun_path,'\0',sizeof(local_addr->sun_path));
+            // strncpy(local_addr->sun_path, socket_name, sizeof(local_addr->sun_path) - 1);
+            // unlink(socket_name);
+            //sprintf(local_addr->sun_path, socket_name);
+            //strncpy(local_addr.sun_path, socket_name)
+            if(bind(socket_fd, (struct sockaddr *)local_addr, sizeof(struct sockaddr_un)) < 0)
             {
-                ALOGD("[%d][%s]bind fail and errno: %d",LINE,FUNC,errno);
+                ALOGD("bind failed name=[%s] reason=[%s]\n", socket_name, strerror(errno));
+                //ALOGD("[%d][%s]bind fail and errno: %d",LINE,FUNC,errno);
+                close(g_atsvc_socket_fd);
                 return -1;
             }
             if(type == SOCK_STREAM)
@@ -116,6 +132,7 @@
                 if(listen(socket_fd,backlog) == -1)
                 {
                     ALOGD("[%d]listen fd: %dfail",LINE);
+                    close(g_atsvc_socket_fd);
                     return -1;
                 }
             }
@@ -337,40 +354,51 @@
         LOGATCI(LOG_ERR, "lose data when send to atci service. errno = %d", errno);
         return -1;
     }
-    LOGATCI(LOG_DEBUG, "send to app demo: %s", atcmd);
+    LOGATCI(LOG_DEBUG, "service send to app demo: %s", atcmd);
     return 0;
 }
 int actsvc_cmd_recv(int fd, char *buf, int len)
 {
     int ret = 0;
-    fd_set rfds;
-    //FD_CLR(fd, &rfds);
-    FD_SET(fd, &rfds);
-    ret = select(fd + 1, &rfds, NULL, NULL, NULL);
-    if (ret <= 0)
-    {
-        ALOGE("acti_cmd_recv select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
-        return SOCKET_FAIL;
-    }
-    if (FD_ISSET(fd, &rfds))
-    {
+    // fd_set rfds;
+    // //FD_CLR(fd, &rfds);
+    // FD_SET(fd, &rfds);
+    // int res = -1;
+    // ret = select(fd + 1, &rfds, NULL, NULL, NULL);
+    // if (ret <= 0)
+    // {
+    //     ALOGE("acti_cmd_recv service select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+    //     return SOCKET_FAIL;
+    // }
+    // res = FD_ISSET(fd, &rfds);
+    // ALOGE("FD_ISSET num is %d ", res);
+    // if (res)
+    // {
+        ALOGE("[%d][%s] recv before",LINE,FUNC);
         ret = recv(fd, buf, len, 0);
+        ALOGE("[%d][%s] recv before",LINE,FUNC);
         if (ret < 0)
         {
-            ALOGE("acti_cmd_recv select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+            ALOGE("acti_cmd_recv service select error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
             return SOCKET_FAIL;
         }
         else if(ret == 0)
         {
-            ALOGE("acti_cmd_recv recv error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
+            ALOGE("acti_cmd_recv service recv error, ret=%d, error=%s(%d),fd=%d", ret,strerror(errno), errno, fd);
             return SOCKET_ZERO;
         }
         else
         {
             ALOGD("[%d][%s] buf is:%s",LINE,FUNC,buf);
+            return SOCKET_SUCC;
         }
-    }
-    return SOCKET_SUCC;
+    // }
+    // else
+    // {
+    //     ALOGE("FD_ISSET is error num is %d ", res);
+    //     return SOCKET_ZERO;
+    // }
+    //return SOCKET_SUCC;
 }
 
 void *start_at_extension_Socket(void * param)
@@ -379,13 +407,27 @@
     socklen_t client_len;
     int ret;
     char parser_buf[SOCKET_BUF_SIZE];
+    TryNewSocket:
     g_atsvc_socket_fd = create_socket(AF_UNIX, SOCK_STREAM,0, 0, NULL,RIL_SOCKET_NAME, (void *)&g_local_addr, 2);
     if(0 > g_atsvc_socket_fd)
     {
         ALOGD("init socket fail and fd:%d",g_atsvc_socket_fd);
-        return NULL;
+        g_create_socket++;
+        if(g_create_socket == 10)
+        {
+            ALOGD("create_socket max try count is %d\n", g_create_socket);
+            return NULL;
+        }
+        else
+        {
+            ALOGD("create_socket try again %d\n", g_create_socket);
+            usleep(500*1000);
+            goto TryNewSocket;
+        }
     }
+    g_create_socket = 0;
     TryNewLink:
+    ALOGE("[%d][%s] TryNewLink!", LINE,FUNC);
     client_len = sizeof(g_local_addr);
     int conn = accept(g_atsvc_socket_fd,(struct sockaddr *) &g_local_addr, &client_len);
     if (conn <= 0)
@@ -399,7 +441,7 @@
     {
         ALOGE("g_atsvc_client_connect need close!");
         close(g_atsvc_client_connect);
-        g_atsvc_client_connect = -1;
+        //g_atsvc_client_connect = -1;
     }
     g_atsvc_client_connect = conn;
     /* tranlate data */
@@ -411,6 +453,7 @@
             memset(register_atcmd_buff, 0, sizeof(register_atcmd_buff));
             ret = actsvc_cmd_recv(conn, register_atcmd_buff, SOCKET_BUF_SIZE);
             upper_string(register_atcmd_buff);
+            ALOGE("[%d][%s] ret %d has_registe_cmd %d",LINE,FUNC,ret,has_registe_cmd);
             if (ret < 0)
             {
                 ALOGE("[%d][%s]receive CMD error",LINE,FUNC);
@@ -426,6 +469,7 @@
         else
         {
             ret = actsvc_cmd_recv(conn, parser_buf, SOCKET_BUF_SIZE);
+            ALOGE("[%d][%s] ret %d has_registe_cmd %d",LINE,FUNC,ret,has_registe_cmd);
             if (ret < 0)
             {
                 ALOGE("[%d][%s]receive CMD error",LINE,FUNC);