From d0290eadc563f5a34fc1969f91621860d8756eff Mon Sep 17 00:00:00 2001 From: San Mehat Date: Tue, 16 Jun 2009 12:01:50 -0700 Subject: [PATCH] nexus: Fix SupplicantStatus decoding Signed-off-by: San Mehat --- nexus/SupplicantStatus.cpp | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/nexus/SupplicantStatus.cpp b/nexus/SupplicantStatus.cpp index 87f6c98dc..b3c560a81 100644 --- a/nexus/SupplicantStatus.cpp +++ b/nexus/SupplicantStatus.cpp @@ -17,7 +17,7 @@ #include #include -#define LOG_TAG "SupplicantState" +#define LOG_TAG "SupplicantStatus" #include #include "SupplicantStatus.h" @@ -52,18 +52,37 @@ SupplicantStatus *SupplicantStatus::createStatus(char *data, int len) { char *next = data; char *line; while((line = strsep(&next, "\n"))) { - char *token = strsep(&next, "="); - char *value = strsep(&next, "="); - + char *line_next = line; + char *token = strsep(&line_next, "="); + char *value = strsep(&line_next, "="); if (!strcmp(token, "bssid")) bssid = strdup(value); else if (!strcmp(token, "ssid")) ssid = strdup(value); else if (!strcmp(token, "id")) id = atoi(value); - else if (!strcmp(token, "wpa_state")) - state = atoi(value); - else + else if (!strcmp(token, "wpa_state")) { + if (!strcmp(value, "DISCONNECTED")) + state = SupplicantState::DISCONNECTED; + else if (!strcmp(value, "INACTIVE")) + state = SupplicantState::INACTIVE; + else if (!strcmp(value, "SCANNING")) + state = SupplicantState::SCANNING; + else if (!strcmp(value, "ASSOCIATING")) + state = SupplicantState::ASSOCIATING; + else if (!strcmp(value, "ASSOCIATED")) + state = SupplicantState::ASSOCIATED; + else if (!strcmp(value, "FOURWAY_HANDSHAKE")) + state = SupplicantState::FOURWAY_HANDSHAKE; + else if (!strcmp(value, "GROUP_HANDSHAKE")) + state = SupplicantState::GROUP_HANDSHAKE; + else if (!strcmp(value, "COMPLETED")) + state = SupplicantState::COMPLETED; + else if (!strcmp(value, "IDLE")) + state = SupplicantState::IDLE; + else + LOGE("Unknown supplicant state '%s'", value); + } else LOGD("Ignoring unsupported status token '%s'", token); }