[Bugfix] [API-359,API-358,API-354]

Change-Id: If453438a5a336aef7d3a52465c7ccf4bacc06d0a
diff --git a/lib/liblynq-wifi6/libwifi6.c b/lib/liblynq-wifi6/libwifi6.c
index 102d130..07beaf7 100755
--- a/lib/liblynq-wifi6/libwifi6.c
+++ b/lib/liblynq-wifi6/libwifi6.c
@@ -128,6 +128,7 @@
     char msg_notify[MAX_RET];
 
     struct wpa_ctrl *lynq_wpa_ctrl = NULL;
+    g_ap_watcher_stop_flag = 0;
 
     while (g_ap_watcher_stop_flag == 0) {
         if (lynq_wpa_ctrl == NULL) {
@@ -161,8 +162,10 @@
             }
         } // end if (!wpa_ctrl_recv(lynq_wpa_ctrl, msg_notify, &len))
     } // end while (g_ap_watcher_stop_flag == 0)
-    wpa_ctrl_detach(lynq_wpa_ctrl);
-    wpa_ctrl_close(lynq_wpa_ctrl);
+    if (lynq_wpa_ctrl != NULL) {
+        wpa_ctrl_detach(lynq_wpa_ctrl);
+        wpa_ctrl_close(lynq_wpa_ctrl);
+    }
 }
 
 static void STAWatcherThreadProc() {
@@ -172,6 +175,7 @@
     error_number_s error;
 
     struct wpa_ctrl *lynq_wpa_ctrl = NULL;
+    g_sta_watcher_stop_flag = 0;
 
     while (g_sta_watcher_stop_flag == 0) {
         if (lynq_wpa_ctrl == NULL) {
@@ -212,10 +216,10 @@
                 pReason = strstr(msg_notify, "reason=");
                 if (pReason != NULL) {
                     pReason += strlen("reason=");
-                    if (memcpy(pReason, "CONN_FAILED", 11) == 0) {
+                    if (memcmp(pReason, "CONN_FAILED", 11) == 0) {
                         error = LYNQ_TIME_OUT;
                     }
-                    else if (memcpy(pReason, "WRONG_KEY", 9) == 0) {
+                    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);
@@ -229,8 +233,10 @@
             }
         }
     }
-    wpa_ctrl_detach(lynq_wpa_ctrl);
-    wpa_ctrl_close(lynq_wpa_ctrl);
+    if (lynq_wpa_ctrl != NULL) {
+        wpa_ctrl_detach(lynq_wpa_ctrl);
+        wpa_ctrl_close(lynq_wpa_ctrl);
+    }
 }
 
 int lynq_wifi_enable(void)
@@ -948,7 +954,7 @@
         return -1;
     }
 
-    if (0 == lynq_wifi_ap_auth_get(idx, &org_auth)) {
+    if (0 == lynq_wifi_ap_auth_get(idx, &org_auth) && org_auth != -1) {
         if (org_auth == auth) {
             return 0;
         }
@@ -973,6 +979,7 @@
 		case LYNQ_WIFI_AUTH_OPEN:
         {
             sprintf(lynq_auth_cmd,"SET_NETWORK %d key_mgmt NONE", AP_NETWORK_0);
+            sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise NONE", AP_NETWORK_0);
 
             DO_OK_FAIL_REQUEST(lynq_auth_cmd);
 			break;
@@ -980,6 +987,7 @@
         case LYNQ_WIFI_AUTH_WEP:
         {
             sprintf(lynq_auth_cmd,"SET_NETWORK %d key_mgmt NONE", AP_NETWORK_0);
+            sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise NONE", AP_NETWORK_0);
             sprintf(lynq_auth_alg_cmd,"SET_NETWORK %d auth_alg  SHARED", AP_NETWORK_0);
 
             DO_OK_FAIL_REQUEST(lynq_auth_cmd);
@@ -1040,9 +1048,9 @@
             *auth = LYNQ_WIFI_AUTH_OPEN;
         }
     }
-    else {
+    else if(strcmp( lynq_auth_str, "WPA-PSK") == 0 ) {
         if (inner_get_param(CTRL_AP, AP_NETWORK_0, "proto", lynq_proto_str) != 0) {
-            *auth = LYNQ_WIFI_AUTH_WPA_PSK;
+            *auth = -1;
         }
         else if (memcmp(lynq_proto_str, "RSN", 3) == 0) {
             *auth = LYNQ_WIFI_AUTH_WPA2_PSK;
@@ -1051,6 +1059,9 @@
             *auth = LYNQ_WIFI_AUTH_WPA_PSK;
         }
     }
+    else {
+        *auth = -1;
+    }
 
     return 0;
 }