nexus: Fix SupplicantStatus decoding
Signed-off-by: San Mehat <san@google.com>
diff --git a/nexus/SupplicantStatus.cpp b/nexus/SupplicantStatus.cpp
index 87f6c98..b3c560a 100644
--- a/nexus/SupplicantStatus.cpp
+++ b/nexus/SupplicantStatus.cpp
@@ -17,7 +17,7 @@
#include <stdlib.h>
#include <string.h>
-#define LOG_TAG "SupplicantState"
+#define LOG_TAG "SupplicantStatus"
#include <cutils/log.h>
#include "SupplicantStatus.h"
@@ -52,18 +52,37 @@
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);
}