binder: Implement |OnStateChanged| callback
Add state change callbacks. This is used by clients to monitor wpa_supplicant's
connection status, etc.
BUG: 30093041
TEST: Ran a simple connect/disconnect integration test gtest.
Change-Id: I35238f0f95b0a0a4723cb315ddaba30dd19d7dab
Signed-off-by: Roshan Pius <rpius@google.com>
diff --git a/wpa_supplicant/binder/binder.cpp b/wpa_supplicant/binder/binder.cpp
index 704b1c3..d174f2b 100644
--- a/wpa_supplicant/binder/binder.cpp
+++ b/wpa_supplicant/binder/binder.cpp
@@ -85,7 +85,7 @@
int wpas_binder_register_interface(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s->global->binder || !wpa_s)
+ if (!wpa_s || !wpa_s->global->binder)
return 1;
wpa_printf(
@@ -102,7 +102,7 @@
int wpas_binder_unregister_interface(struct wpa_supplicant *wpa_s)
{
- if (!wpa_s->global->binder || !wpa_s)
+ if (!wpa_s || !wpa_s->global->binder)
return 1;
wpa_printf(
@@ -120,7 +120,7 @@
int wpas_binder_register_network(
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
{
- if (!wpa_s->global->binder || !wpa_s || !ssid)
+ if (!wpa_s || !wpa_s->global->binder || !ssid)
return 1;
wpa_printf(
@@ -137,7 +137,7 @@
int wpas_binder_unregister_network(
struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
{
- if (!wpa_s->global->binder || !wpa_s || !ssid)
+ if (!wpa_s || !wpa_s->global->binder || !ssid)
return 1;
wpa_printf(
@@ -151,3 +151,20 @@
return binder_manager->unregisterNetwork(wpa_s, ssid);
}
+
+int wpas_binder_notify_state_changed(struct wpa_supplicant *wpa_s)
+{
+ if (!wpa_s || !wpa_s->global->binder || !ssid)
+ return 1;
+
+ wpa_printf(
+ MSG_DEBUG, "Notifying state change event to binder control: %d",
+ wpa_s->wpa_state);
+
+ wpa_supplicant_binder::BinderManager *binder_manager =
+ wpa_supplicant_binder::BinderManager::getInstance();
+ if (!binder_manager)
+ return 1;
+
+ return binder_manager->notifyStateChange(wpa_s);
+}