[Bugfxi][API-663]fix sta callback return -1 add new error code

Change-Id: I9e55f67f711e2f4d222d854900cb5214665930f9
diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 6c45654..39314d2 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -212,7 +212,7 @@
         if (!wpa_ctrl_recv(lynq_wpa_ctrl, msg_notify, &len))
 	{
             msg_notify[len+1] = '\0';
-            RLOGD("STAWatcherThreadProc ap------> %s\n", msg_notify);
+            RLOGD("APWatcherThreadProc ap------> %s\n", msg_notify);
 //you.chen change for tv-box start
             if (strstr(msg_notify, "AP-STA-DISCONNECTED") != NULL)
 	    {
@@ -250,11 +250,128 @@
     }
 }
 
+void get_state_error(const char* modify, lynq_wifi_sta_status_s* state, error_number_s* error)
+{
+    char *pReason;
+    *error = LYNQ_WAIT_CONNECT_ACTIVE;
+    if (strstr(modify, "CTRL-EVENT-SCAN-RESULTS") != NULL)
+    {
+        *state = LYNQ_WIFI_STA_STATUS_SCAN_RESULT;
+        RLOGD("CTRL-EVENT-SCAN-RESULTS state:%d,error:%d\n",*state,*error);
+        return;
+    }
+
+    if (strstr(modify, "CTRL-EVENT-CONNECTED") != NULL)
+    {
+        *state = LYNQ_WIFI_STA_STATUS_CONNECT;
+        RLOGD("CTRL-EVENT-CONNECTED state:%d,error:%d\n",*state,*error);
+        return;
+    }
+
+    if (strstr(modify, "CTRL-EVENT-SSID-TEMP-DISABLED") != NULL)
+    {
+        pReason = strstr(modify, "reason=");
+        if (pReason != NULL)
+        {
+            pReason += strlen("reason=");
+            if (memcmp(pReason, "CONN_FAILED", 11) == 0)
+            {
+                *error = LYNQ_TIME_OUT;
+            }
+            else if (memcmp(pReason, "WRONG_KEY", 9) == 0)
+            {
+                *error = LYNQ_PSW_ERROR;
+            }
+            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;
+        }
+
+    }
+
+    if (strstr(modify, "CTRL-EVENT-NETWORK-NOT-FOUND") != NULL)
+    {
+        *error = LYNQ_NOT_FIND_AP;
+        *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+        RLOGD("CTRL-EVENT-NETWORK-NOT-FOUND state:%d,error:%d\n",*state,*error);
+        return;
+    }
+
+
+    if (strstr(modify, "CTRL-EVENT-ASSOC-REJECT") != NULL)
+    {
+        RLOGD("FIND CTRL EVENT : CTRL-EVENT-ASSOC-REJECT\n");
+        pReason = strstr(modify, "status_code=");
+        if (pReason != NULL)
+        {
+            pReason += strlen("status_code=");
+            if (memcmp(pReason, "17", 2) == 0)
+            {
+                *error = LYNQ_AP_UNABLE_HANDLE;
+            }
+            else if (memcmp(pReason, "1",1) == 0)
+            {
+                *error = LYNQ_UNSPECIFIED_REASON;
+            }
+            else
+            {
+                *error = LYNQ_UNSPECIFIED_REASON;
+            }
+
+             *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+             RLOGD("CTRL-EVENT-ASSOC-REJECT BUT NOT STATUS_CODE NOT 1 or 17 state:%d,error:%d\n",*state,*error);
+             return;
+        }
+        else
+        {
+            RLOGD("FIND CTRL EVENT : CTRL-EVENT-ASSOC-REJECT BUT NOT FOUND STATUS_CODE\n");
+            *error = LYNQ_UNSPECIFIED_REASON;
+            *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+            RLOGD("CTRL-EVENT-ASSOC-REJECT state:%d,error:%d\n",*state,*error);
+            return;
+        }
+    }
+
+    if (strstr(modify, "CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER") != NULL)
+    {
+        RLOGD("FIND CTRL EVENT : CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER\n");
+        *error = LYNQ_AUTHENTICATION_NO_LONGER_VALID;
+        *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+        RLOGD("CTRL-EVENT-SAE-UNKNOWN-PASSWORD-IDENTIFIER state:%d,error:%d\n",*state,*error);
+        return;
+    }
+
+    if (strstr(modify, "CTRL-EVENT-DISCONNECTED") != NULL)
+    {
+        RLOGD("FIND CTRL EVENT : CTRL-EVENT-DISCONNECTED\n");
+        *error = LYNQ_WAIT_CONNECT_ACTIVE;
+        *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+        RLOGD("CTRL-EVENT-DISCONNECTED state:%d,error:%d\n",*state,*error);
+        return;
+    }
+
+    *error = LYNQ_UNSPECIFIED_REASON;
+    *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+    RLOGD("LAST : STA state:%d,error:%d\n",*state,*error);
+    return;
+
+}
+
 static void STAWatcherThreadProc() {
     size_t len = MAX_RET;
     char msg_notify[MAX_RET];
-    char *pReason;
     error_number_s error;
+    lynq_wifi_sta_status_s state;
 
     struct wpa_ctrl *lynq_wpa_ctrl = NULL;
     g_sta_watcher_stop_flag = 0;
@@ -262,10 +379,10 @@
     while (g_sta_watcher_stop_flag == 0)
     {
         if (lynq_wpa_ctrl == NULL)
-	{
+        {
             lynq_wpa_ctrl = wpa_ctrl_open(CTRL_PATH[CTRL_STA]);
             if (lynq_wpa_ctrl == NULL)
-	    {
+            {
                 usleep(100*1000);
                 continue;
             }
@@ -275,59 +392,28 @@
         }
 
         if ( 0 == wpa_ctrl_pending(lynq_wpa_ctrl))
-	{
+        {
             usleep(100*1000);
             continue;
         }
         memset(msg_notify, 0, MAX_RET);
         len = MAX_RET;
         if (!wpa_ctrl_recv(lynq_wpa_ctrl, msg_notify, &len))
-	{
+        {
             msg_notify[len+1] = '\0';
             RLOGD("STAWatcherThreadProc sta ------> %s\n", msg_notify);
             if (strstr(msg_notify, state_scan_result) != NULL)
-	    {
+            {
                 g_sta_scan_finish_flag = 1;
             }
 
             if (g_sta_callback_func == NULL)
-	    {
+            {
                 continue;
             }
-            error = -1;
-            if (strstr(msg_notify, "CTRL-EVENT-SCAN-RESULTS") != NULL)
-	    {
-                g_sta_callback_func(g_ap_callback_priv, LYNQ_WIFI_STA_STATUS_SCAN_RESULT, error);
-            }
-            else if (strstr(msg_notify, "CTRL-EVENT-CONNECTED") != NULL)
-	    {
-                g_sta_callback_func(g_ap_callback_priv, LYNQ_WIFI_STA_STATUS_CONNECT, error);
-            }
-            else if (strstr(msg_notify, "CTRL-EVENT-SSID-TEMP-DISABLED") != NULL)
-	    {
-                pReason = strstr(msg_notify, "reason=");
-                if (pReason != NULL)
-		{
-                    pReason += strlen("reason=");
-                    if (memcmp(pReason, "CONN_FAILED", 11) == 0)
-		    {
-                        error = LYNQ_TIME_OUT;
-                    }
-                    else if (memcmp(pReason, "WRONG_KEY", 9) == 0)
-		    {
-                        error = LYNQ_PSW_ERROR;
-                    }
-                    g_sta_callback_func(g_ap_callback_priv, LYNQ_WIFI_STA_STATUS_DISCONNECT, error);
-                }
-            }
-            else if (strstr(msg_notify, "CTRL-EVENT-DISCONNECTED") != NULL)
-	    {
-                g_sta_callback_func(g_ap_callback_priv, LYNQ_WIFI_STA_STATUS_DISCONNECT, error);
-            }
-            else if (strstr(msg_notify, "CTRL-EVENT-NETWORK-NOT-FOUND") != NULL)
-	    {
-                g_sta_callback_func(g_ap_callback_priv, LYNQ_WIFI_STA_STATUS_DISCONNECT, LYNQ_NOT_FIND_AP);
-            }
+            get_state_error(msg_notify,&state,&error);
+            g_sta_callback_func(g_sta_callback_priv, state, error);
+
         }
     }
     if (lynq_wpa_ctrl != NULL)
@@ -2219,7 +2305,9 @@
             sprintf(lynq_psk_cmd, "SET_NETWORK %d psk \"%s\"", net_no, password);
             
 	    DO_OK_FAIL_REQUEST(lynq_auth_cmd);
+	    RLOGD("inner_set_sta_auth_psw before set SAE CMD");
             DO_OK_FAIL_REQUEST(lynq_ket_mgmt_cmd);
+	    RLOGD("inner_set_sta_auth_psw after set SAE CMD");
             DO_OK_FAIL_REQUEST(lynq_pairwise_cmd);
             DO_OK_FAIL_REQUEST(lynq_psk_cmd);