[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);