[Bugfix][API-1121] fix sta disconnect ap,try connect other ap until conneted,when cmmd scan done

Change-Id: Ia448f85addec214601a2cd409b6bd451b00c38fb
diff --git a/lib/liblynq-wifi6/libwifi6.c b/lib/liblynq-wifi6/libwifi6.c
index b9658b9..ed4024c 100755
--- a/lib/liblynq-wifi6/libwifi6.c
+++ b/lib/liblynq-wifi6/libwifi6.c
@@ -514,9 +514,28 @@
     pthread_mutex_unlock(&s_global_check_mutex);
 }
 
+static int lynq_wifi_sta_stop_network(lynq_wifi_index_e idx,int networkid)
+{
+    char LYNQ_DISABLE_CMD[128]={0};
+    
+    CHECK_IDX(idx, CTRL_STA);
+    CHECK_WPA_CTRL(CTRL_STA);
+    
+    sprintf(LYNQ_DISABLE_CMD,"DISABLE_NETWORK %d",networkid);
+    RLOGD("LYNQ_DISABLE_CMD is:%d\n",LYNQ_DISABLE_CMD);
+    DO_OK_FAIL_REQUEST(LYNQ_DISABLE_CMD);
+    
+    return 0;
+    
+}
+
+
 void get_state_error(const char* modify, lynq_wifi_sta_status_s* state, error_number_s* error)
 {
     char *pReason;
+    char *wpanetid;
+    char destid[3] = {0};
+    int tmpdisid = -1;
     *error = LYNQ_WAIT_CONNECT_ACTIVE;
     if (strstr(modify, "CTRL-EVENT-SCAN-RESULTS") != NULL)
     {
@@ -534,6 +553,15 @@
 
     if (strstr(modify, "CTRL-EVENT-SSID-TEMP-DISABLED") != NULL)
     {
+        *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+        wpanetid = strstr(modify,"id=");
+        if ( wpanetid != NULL )
+        {
+            wpanetid +=strlen("id=");
+            memcpy(destid,wpanetid,2);
+            tmpdisid = atoi(destid);
+
+        }
         pReason = strstr(modify, "reason=");
         if (pReason != NULL)
         {
@@ -545,21 +573,23 @@
             else if (memcmp(pReason, "WRONG_KEY", 9) == 0)
             {
                 *error = LYNQ_PSW_ERROR;
+                // tmp fix sta autoconnect connect and disconnect
+                if(tmpdisid != -1 && lynq_wifi_sta_stop_network(0,tmpdisid) != 0)
+                {
+                    RLOGE("stop wlan0 network %d fail",tmpdisid);
+                }
             }
             else 
             {
                 *error = LYNQ_UNSPECIFIED_REASON;
             }
-            *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
-            RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d\n",*state,*error);
-            return;
         }
         else
         {
             *error = LYNQ_UNSPECIFIED_REASON;
-            *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
-            return;
         }
+        RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d,tmpnetid:%d",*state,*error,tmpdisid);
+        return;
 
     }
 
@@ -2994,7 +3024,6 @@
     curr_state.state = state;
     return inner_get_status_info(interface, &curr_state);
 }
-
 int lynq_wifi_sta_stop(lynq_wifi_index_e idx)
 {
 //    char lynq_disable_network_cmd[MAX_CMD];