[Bugfix] temp fix uart3 course wifi unavailable & fix [302] [305] [283]

Change-Id: I7df20d7dc5b62488ca7a23756474e30422eda324
diff --git a/lib/liblynq-wifi6/libwifi6.c b/lib/liblynq-wifi6/libwifi6.c
index 682fa6d..d0e8750 100755
--- a/lib/liblynq-wifi6/libwifi6.c
+++ b/lib/liblynq-wifi6/libwifi6.c
@@ -99,7 +99,7 @@
         printf("to call [%s]\n", cmd_str);  \
         ret = wpa_ctrl_request(lynq_wpa_ctrl, cmd_str, strlen(cmd_str), cmd_reply, &reply_len, NULL); \
         if (ret != 0) { \
-            printf("call ##cmd_str fail %d\n", ret); \
+            printf("call "#cmd_str" fail %d\n", ret); \
             return ret; \
         } \
         cmd_reply[reply_len+1] = '\0'; \
@@ -109,10 +109,10 @@
 #define DO_OK_FAIL_REQUEST(cmd_str) do { \
         DO_REQUEST(cmd_str); \
         if (reply_len >=4 && memcmp(cmd_reply, "FAIL", 4) == 0 ) {\
-            printf("cmd ##cmd_str return FAIL\n"); \
+            printf("cmd "#cmd_str" return FAIL\n"); \
             return -1; \
         } else if (reply_len >=2 && memcmp(cmd_reply, "OK", 2) != 0) { \
-            printf("cmd ##cmd_str return not OK|FAIL\n"); \
+            printf("cmd "#cmd_str" return not OK|FAIL\n"); \
             return -1; \
         } \
     }while (0)
@@ -466,7 +466,7 @@
     const char *lynq_wifi_add_network = "ADD_NETWORK";
 
     DO_REQUEST(lynq_wifi_add_network);
-    if (memcpy(cmd_reply, "FAIL", 4) == 0) {
+    if (memcmp(cmd_reply, "FAIL", 4) == 0) {
         return -1;
     }
 
@@ -478,6 +478,7 @@
     }
     return atoi(cmd_reply);
 }
+
 static int lynq_check_network_number(lynq_wifi_index_e idx, int ap_sta, int net_no)
 {
     int count, index;
@@ -501,6 +502,10 @@
         if (index >= net_no) { // required network no created
             return 0;
         }
+        else if( index < 0) {
+            printf("add network fail\n");
+            return -1;
+        }
     }
 
     if (index < 0)
@@ -638,7 +643,7 @@
             }
 
         } //end else if (state != NULL)
-        if ((p = strstr(split_lines[i], FLAG_ID)) != NULL) {
+        if ((p = strstr(split_lines[i], FLAG_ID)) == split_lines[i]) {
             ret = 0;
             curr_state->net_no = atoi(p);
             printf("net_no %d, -- %s\n", curr_state->net_no, p);
@@ -898,7 +903,7 @@
             }
             else if (auth == LYNQ_WIFI_AUTH_WPA2_PSK) {
                 sprintf(lynq_auth_cmd,"SET_NETWORK %d proto WPA2", AP_NETWORK_0);
-                sprintf(lynq_psk_cmd,"SET_NETWORK %d key_mgmt WPA2-PSK", AP_NETWORK_0);
+                sprintf(lynq_psk_cmd,"SET_NETWORK %d key_mgmt WPA-PSK", AP_NETWORK_0);
             }
 //            sprintf(lynq_auth_cmd,"SET_NETWORK %d proto WPA2", AP_NETWORK_0);
 //            sprintf(lynq_psk_cmd,"SET_NETWORK %d key_mgmt WPA-PSK", AP_NETWORK_0);
@@ -1118,12 +1123,21 @@
 
 static int inner_get_network_auth(int interface, int net_no, lynq_wifi_auth_s *auth) {
     char lynq_auth_str[MAX_RET] = {0};
+    char lynq_proto_str[MAX_RET] = {0};
 
     if (inner_get_param(interface, net_no, "key_mgmt", lynq_auth_str) != 0) {
         return -1;
     }
 
     *auth = convert_auth_from_key_mgmt(lynq_auth_str);
+
+    if (*auth == LYNQ_WIFI_AUTH_WPA_PSK) {
+        if (inner_get_param(interface, net_no, "proto", lynq_proto_str) == 0) {
+            if (strcmp(lynq_proto_str, "RSN") == 0) {
+                *auth = LYNQ_WIFI_AUTH_WPA2_PSK;
+            }
+        }
+    }
     return 0;
 }
 
@@ -1378,7 +1392,7 @@
                 sprintf(lynq_auth_cmd,"SET_NETWORK %d proto WPA", net_no);
             }
             else if (auth == LYNQ_WIFI_AUTH_WPA2_PSK) {
-                sprintf(lynq_auth_cmd,"SET_NETWORK %d proto WPA2", net_no);
+                sprintf(lynq_auth_cmd,"SET_NETWORK %d proto RSN", net_no);
             }
             sprintf(lynq_ket_mgmt_cmd,"SET_NETWORK %d key_mgmt WPA-PSK", net_no);
             sprintf(lynq_pairwise_cmd,"SET_NETWORK %d pairwise CCMP", net_no);
@@ -1504,21 +1518,47 @@
     return inner_sta_start_stop(curr_state.net_no, 0, 0);
 }
 
-int lynq_wifi_sta_start(lynq_wifi_index_e idx) {
+int lynq_wifi_sta_start(lynq_wifi_index_e idx)
+{
+//    const char *lynq_reconfigure_cmd = "RECONFIGURE /data/wifi/wg870/wpa_supplicant.conf";
 
     CHECK_IDX(idx, CTRL_STA);
+    CHECK_WPA_CTRL(CTRL_STA);
+
+    system("connmanctl enable wifi");
+
     if (system("ifconfig | grep wlan0") != 0) {
         return -1;
     }
 
-    return system("connmanctl enable wifi");
+//    DO_OK_FAIL_REQUEST(lynq_reconfigure_cmd);
+
+    return 0;
 }
 
 int lynq_wifi_sta_stop(lynq_wifi_index_e idx)
 {
-    CHECK_IDX(idx, CTRL_STA);
+    char lynq_disable_network_cmd[MAX_CMD];
+    curr_status_info curr_state;
+    ap_info_s ap_info;
 
-    return system("connmanctl disable wifi");
+    CHECK_IDX(idx, CTRL_STA);
+    CHECK_WPA_CTRL(CTRL_STA);
+
+    curr_state.ap = &ap_info;
+    curr_state.state = NULL;
+
+    if (0 != inner_get_status_info(CTRL_STA, &curr_state) || curr_state.net_no < 0) {
+        return 0;
+    }
+
+    sprintf(lynq_disable_network_cmd, "DISABLE_NETWORK %d", curr_state.net_no);
+    DO_OK_FAIL_REQUEST(lynq_disable_network_cmd);
+
+    DO_OK_FAIL_REQUEST(cmd_save_config);
+
+    return 0;
+//    return system("connmanctl disable wifi");
 }
 
 //static int inner_get_sta_info(lynq_wifi_index_e idx, const char * bssid, device_info_s *dev) {