binder: Callback registration for interfaces
Add callback registration for each binder interface type:
ISupplicant, IIface, INetwork.
BUG: 30093041
Change-Id: I9043d9a033bcfbee5a80f61cf58e564249edf3a7
diff --git a/wpa_supplicant/binder/iface.cpp b/wpa_supplicant/binder/iface.cpp
index 267b90b..5b5a68e 100644
--- a/wpa_supplicant/binder/iface.cpp
+++ b/wpa_supplicant/binder/iface.cpp
@@ -120,6 +120,25 @@
return android::binder::Status::ok();
}
+android::binder::Status Iface::RegisterCallback(
+ const android::sp<fi::w1::wpa_supplicant::IIfaceCallback> &callback)
+{
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ if (!wpa_s) {
+ return android::binder::Status::fromServiceSpecificError(
+ ERROR_IFACE_INVALID,
+ "wpa_supplicant does not control this interface.");
+ }
+ BinderManager *binder_manager = BinderManager::getInstance();
+ if (!binder_manager ||
+ binder_manager->addIfaceCallbackBinderObject(ifname_, callback)) {
+ return android::binder::Status::fromServiceSpecificError(
+ ERROR_GENERIC,
+ "wpa_supplicant encountered a binder error.");
+ }
+ return android::binder::Status::ok();
+}
+
/**
* Retrieve the underlying |wpa_supplicant| struct pointer for
* this iface.