wpa_supplicant(hidl): Use hidl_return_util in |StaIface|
Use the new helper functions in all |ISupplicantStaIface| methods.
Bug: 32869248
Test: Compiles
Change-Id: Ibc73a7517ebe88416c7d4e4adc95194f588ca203
diff --git a/wpa_supplicant/hidl/sta_iface.cpp b/wpa_supplicant/hidl/sta_iface.cpp
index e3a384b..1672d4c 100644
--- a/wpa_supplicant/hidl/sta_iface.cpp
+++ b/wpa_supplicant/hidl/sta_iface.cpp
@@ -8,7 +8,7 @@
*/
#include "hidl_manager.h"
-#include "hidl_return_macros.h"
+#include "hidl_return_util.h"
#include "sta_iface.h"
namespace android {
@@ -17,216 +17,257 @@
namespace supplicant {
namespace V1_0 {
namespace implementation {
+using hidl_return_util::validateAndCall;
StaIface::StaIface(struct wpa_global *wpa_global, const char ifname[])
- : wpa_global_(wpa_global), ifname_(ifname)
+ : wpa_global_(wpa_global), ifname_(ifname), is_valid_(true)
{
}
+void StaIface::invalidate() { is_valid_ = false; }
+bool StaIface::isValid()
+{
+ return (is_valid_ && (retrieveIfacePtr() != nullptr));
+}
+
Return<void> StaIface::getName(getName_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_IFACE_INVALID, ifname_);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, ifname_);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::getNameInternal, _hidl_cb);
}
Return<void> StaIface::getType(getType_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_IFACE_INVALID,
- IfaceType::STA);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, IfaceType::STA);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::getTypeInternal, _hidl_cb);
}
Return<void> StaIface::addNetwork(addNetwork_cb _hidl_cb)
{
- android::sp<ISupplicantStaNetwork> network;
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_IFACE_INVALID, network);
- }
-
- struct wpa_ssid *ssid = wpa_supplicant_add_network(wpa_s);
- if (!ssid) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN, network);
- }
-
- HidlManager *hidl_manager = HidlManager::getInstance();
- if (!hidl_manager ||
- hidl_manager->getStaNetworkHidlObjectByIfnameAndNetworkId(
- wpa_s->ifname, ssid->id, &network)) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN, network);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, network);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::addNetworkInternal, _hidl_cb);
}
-Return<void> StaIface::removeNetwork(uint32_t id, removeNetwork_cb _hidl_cb)
+Return<void> StaIface::removeNetwork(
+ SupplicantNetworkId id, removeNetwork_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- int result = wpa_supplicant_remove_network(wpa_s, id);
- if (result == -1) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_NETWORK_UNKNOWN);
- }
-
- if (result != 0) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::removeNetworkInternal, _hidl_cb, id);
}
-Return<void> StaIface::getNetwork(uint32_t id, getNetwork_cb _hidl_cb)
+Return<void> StaIface::getNetwork(
+ SupplicantNetworkId id, getNetwork_cb _hidl_cb)
{
- android::sp<ISupplicantStaNetwork> network;
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_IFACE_INVALID, network);
- }
-
- struct wpa_ssid *ssid = wpa_config_get_network(wpa_s->conf, id);
- if (!ssid) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_NETWORK_UNKNOWN, network);
- }
-
- HidlManager *hidl_manager = HidlManager::getInstance();
- if (!hidl_manager ||
- hidl_manager->getStaNetworkHidlObjectByIfnameAndNetworkId(
- wpa_s->ifname, ssid->id, &network)) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN, network);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, network);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::getNetworkInternal, _hidl_cb, id);
}
Return<void> StaIface::listNetworks(listNetworks_cb _hidl_cb)
{
- std::vector<uint32_t> network_ids;
-
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_IFACE_INVALID, network_ids);
- }
-
- for (struct wpa_ssid *wpa_ssid = wpa_s->conf->ssid; wpa_ssid;
- wpa_ssid = wpa_ssid->next) {
- network_ids.emplace_back(wpa_ssid->id);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, network_ids);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::listNetworksInternal, _hidl_cb);
}
Return<void> StaIface::registerCallback(
const sp<ISupplicantStaIfaceCallback> &callback,
registerCallback_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- HidlManager *hidl_manager = HidlManager::getInstance();
- if (!hidl_manager ||
- hidl_manager->addStaIfaceCallbackHidlObject(ifname_, callback)) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::registerCallbackInternal, _hidl_cb, callback);
}
Return<void> StaIface::reassociate(reassociate_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_DISABLED);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::reassociateInternal, _hidl_cb);
}
Return<void> StaIface::reconnect(reconnect_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_DISABLED);
- }
- if (!wpa_s->disconnected) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_IFACE_NOT_DISCONNECTED);
- }
-
- wpas_request_connection(wpa_s);
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::reconnectInternal, _hidl_cb);
}
Return<void> StaIface::disconnect(disconnect_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_DISABLED);
- }
-
- wpas_request_disconnection(wpa_s);
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::disconnectInternal, _hidl_cb);
}
Return<void> StaIface::setPowerSave(bool enable, setPowerSave_cb _hidl_cb)
{
- struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- if (wpa_drv_set_p2p_powersave(wpa_s, enable, -1, -1)) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::setPowerSaveInternal, _hidl_cb, enable);
}
Return<void> StaIface::initiateTdlsDiscover(
- const hidl_array<uint8_t, 6 /* 6 */> &mac_address,
- initiateTdlsDiscover_cb _hidl_cb)
+ const hidl_array<uint8_t, 6> &mac_address, initiateTdlsDiscover_cb _hidl_cb)
+{
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::initiateTdlsDiscoverInternal, _hidl_cb, mac_address);
+}
+
+Return<void> StaIface::initiateTdlsSetup(
+ const hidl_array<uint8_t, 6> &mac_address, initiateTdlsSetup_cb _hidl_cb)
+{
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::initiateTdlsSetupInternal, _hidl_cb, mac_address);
+}
+
+Return<void> StaIface::initiateTdlsTeardown(
+ const hidl_array<uint8_t, 6> &mac_address, initiateTdlsTeardown_cb _hidl_cb)
+{
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
+ &StaIface::initiateTdlsTeardownInternal, _hidl_cb, mac_address);
+}
+
+std::pair<SupplicantStatus, std::string> StaIface::getNameInternal()
+{
+ return {{SupplicantStatusCode::SUCCESS, ""}, ifname_};
+}
+
+std::pair<SupplicantStatus, IfaceType> StaIface::getTypeInternal()
+{
+ return {{SupplicantStatusCode::SUCCESS, ""}, IfaceType::STA};
+}
+
+std::pair<SupplicantStatus, sp<ISupplicantNetwork>>
+StaIface::addNetworkInternal()
+{
+ android::sp<ISupplicantStaNetwork> network;
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ struct wpa_ssid *ssid = wpa_supplicant_add_network(wpa_s);
+ if (!ssid) {
+ return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, network};
+ }
+ HidlManager *hidl_manager = HidlManager::getInstance();
+ if (!hidl_manager ||
+ hidl_manager->getStaNetworkHidlObjectByIfnameAndNetworkId(
+ wpa_s->ifname, ssid->id, &network)) {
+ return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, network};
+ }
+ return {{SupplicantStatusCode::SUCCESS, ""}, network};
+}
+
+SupplicantStatus StaIface::removeNetworkInternal(SupplicantNetworkId id)
{
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
+ int result = wpa_supplicant_remove_network(wpa_s, id);
+ if (result == -1) {
+ return {SupplicantStatusCode::FAILURE_NETWORK_UNKNOWN, ""};
}
-
- if (!mac_address.data()) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_ARGS_INVALID);
+ if (result != 0) {
+ return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
+ return {SupplicantStatusCode::SUCCESS, ""};
+}
+std::pair<SupplicantStatus, sp<ISupplicantNetwork>>
+StaIface::getNetworkInternal(SupplicantNetworkId id)
+{
+ android::sp<ISupplicantStaNetwork> network;
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ struct wpa_ssid *ssid = wpa_config_get_network(wpa_s->conf, id);
+ if (!ssid) {
+ return {{SupplicantStatusCode::FAILURE_NETWORK_UNKNOWN, ""},
+ network};
+ }
+ HidlManager *hidl_manager = HidlManager::getInstance();
+ if (!hidl_manager ||
+ hidl_manager->getStaNetworkHidlObjectByIfnameAndNetworkId(
+ wpa_s->ifname, ssid->id, &network)) {
+ return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, network};
+ }
+ return {{SupplicantStatusCode::SUCCESS, ""}, network};
+}
+
+std::pair<SupplicantStatus, std::vector<SupplicantNetworkId>>
+StaIface::listNetworksInternal()
+{
+ std::vector<SupplicantNetworkId> network_ids;
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ for (struct wpa_ssid *wpa_ssid = wpa_s->conf->ssid; wpa_ssid;
+ wpa_ssid = wpa_ssid->next) {
+ network_ids.emplace_back(wpa_ssid->id);
+ }
+ return {{SupplicantStatusCode::SUCCESS, ""}, std::move(network_ids)};
+}
+
+SupplicantStatus StaIface::registerCallbackInternal(
+ const sp<ISupplicantStaIfaceCallback> &callback)
+{
+ HidlManager *hidl_manager = HidlManager::getInstance();
+ if (!hidl_manager ||
+ hidl_manager->addStaIfaceCallbackHidlObject(ifname_, callback)) {
+ return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+ }
+ return {SupplicantStatusCode::SUCCESS, ""};
+}
+
+SupplicantStatus StaIface::reassociateInternal()
+{
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
+ return {SupplicantStatusCode::FAILURE_IFACE_DISABLED, ""};
+ }
+ wpas_request_connection(wpa_s);
+ return {SupplicantStatusCode::SUCCESS, ""};
+}
+
+SupplicantStatus StaIface::reconnectInternal()
+{
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
+ return {SupplicantStatusCode::FAILURE_IFACE_DISABLED, ""};
+ }
+ if (!wpa_s->disconnected) {
+ return {SupplicantStatusCode::FAILURE_IFACE_NOT_DISCONNECTED,
+ ""};
+ }
+ wpas_request_connection(wpa_s);
+ return {SupplicantStatusCode::SUCCESS, ""};
+}
+
+SupplicantStatus StaIface::disconnectInternal()
+{
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
+ return {SupplicantStatusCode::FAILURE_IFACE_DISABLED, ""};
+ }
+ wpas_request_disconnection(wpa_s);
+ return {SupplicantStatusCode::SUCCESS, ""};
+}
+
+SupplicantStatus StaIface::setPowerSaveInternal(bool enable)
+{
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
+ if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
+ return {SupplicantStatusCode::FAILURE_IFACE_DISABLED, ""};
+ }
+ if (wpa_drv_set_p2p_powersave(wpa_s, enable, -1, -1)) {
+ return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+ }
+ return {SupplicantStatusCode::SUCCESS, ""};
+}
+
+SupplicantStatus StaIface::initiateTdlsDiscoverInternal(
+ const std::array<uint8_t, 6> &mac_address)
+{
+ struct wpa_supplicant *wpa_s = retrieveIfacePtr();
int ret;
const u8 *peer = mac_address.data();
if (wpa_tdls_is_external_setup(wpa_s->wpa)) {
@@ -235,25 +276,15 @@
ret = wpa_drv_tdls_oper(wpa_s, TDLS_DISCOVERY_REQ, peer);
}
if (ret) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
+ return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return {SupplicantStatusCode::SUCCESS, ""};
}
-Return<void> StaIface::initiateTdlsSetup(
- const hidl_array<uint8_t, 6 /* 6 */> &mac_address,
- initiateTdlsSetup_cb _hidl_cb)
+SupplicantStatus StaIface::initiateTdlsSetupInternal(
+ const std::array<uint8_t, 6> &mac_address)
{
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- if (!mac_address.data()) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_ARGS_INVALID);
- }
-
int ret;
const u8 *peer = mac_address.data();
if (wpa_tdls_is_external_setup(wpa_s->wpa) &&
@@ -264,25 +295,15 @@
ret = wpa_drv_tdls_oper(wpa_s, TDLS_SETUP, peer);
}
if (ret) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
+ return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return {SupplicantStatusCode::SUCCESS, ""};
}
-Return<void> StaIface::initiateTdlsTeardown(
- const hidl_array<uint8_t, 6 /* 6 */> &mac_address,
- initiateTdlsTeardown_cb _hidl_cb)
+SupplicantStatus StaIface::initiateTdlsTeardownInternal(
+ const std::array<uint8_t, 6> &mac_address)
{
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
- if (!wpa_s) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_IFACE_INVALID);
- }
-
- if (!mac_address.data()) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_ARGS_INVALID);
- }
-
int ret;
const u8 *peer = mac_address.data();
if (wpa_tdls_is_external_setup(wpa_s->wpa) &&
@@ -292,12 +313,10 @@
} else {
ret = wpa_drv_tdls_oper(wpa_s, TDLS_TEARDOWN, peer);
}
-
if (ret) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
+ return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return {SupplicantStatusCode::SUCCESS, ""};
}
/**
diff --git a/wpa_supplicant/hidl/sta_iface.h b/wpa_supplicant/hidl/sta_iface.h
index f246bbc..8b9755a 100644
--- a/wpa_supplicant/hidl/sta_iface.h
+++ b/wpa_supplicant/hidl/sta_iface.h
@@ -10,6 +10,9 @@
#ifndef WPA_SUPPLICANT_HIDL_STA_IFACE_H
#define WPA_SUPPLICANT_HIDL_STA_IFACE_H
+#include <array>
+#include <vector>
+
#include <android-base/macros.h>
#include <android/hardware/wifi/supplicant/1.0/ISupplicantStaIface.h>
@@ -43,14 +46,29 @@
public:
StaIface(struct wpa_global* wpa_global, const char ifname[]);
~StaIface() override = default;
+ // HIDL does not provide a built-in mechanism to let the server
+ // invalidate a HIDL interface object after creation. If any client
+ // process holds onto a reference to the object in their context,
+ // any method calls on that reference will continue to be directed to
+ // the server.
+ // However Supplicant HAL needs to control the lifetime of these
+ // objects. So, add a public |invalidate| method to all |Iface| and
+ // |Network| objects.
+ // This will be used to mark an object invalid when the corresponding
+ // iface or network is removed.
+ // All HIDL method implementations should check if the object is still
+ // marked valid before processing them.
+ void invalidate();
+ bool isValid();
// Hidl methods exposed.
Return<void> getName(getName_cb _hidl_cb) override;
Return<void> getType(getType_cb _hidl_cb) override;
Return<void> addNetwork(addNetwork_cb _hidl_cb) override;
Return<void> removeNetwork(
- uint32_t id, removeNetwork_cb _hidl_cb) override;
- Return<void> getNetwork(uint32_t id, getNetwork_cb _hidl_cb) override;
+ SupplicantNetworkId id, removeNetwork_cb _hidl_cb) override;
+ Return<void> getNetwork(
+ SupplicantNetworkId id, getNetwork_cb _hidl_cb) override;
Return<void> listNetworks(listNetworks_cb _hidl_cb) override;
Return<void> registerCallback(
const sp<ISupplicantStaIfaceCallback>& callback,
@@ -61,16 +79,39 @@
Return<void> setPowerSave(
bool enable, setPowerSave_cb _hidl_cb) override;
Return<void> initiateTdlsDiscover(
- const hidl_array<uint8_t, 6 /* 6 */>& mac_address,
+ const hidl_array<uint8_t, 6>& mac_address,
initiateTdlsDiscover_cb _hidl_cb) override;
Return<void> initiateTdlsSetup(
- const hidl_array<uint8_t, 6 /* 6 */>& mac_address,
+ const hidl_array<uint8_t, 6>& mac_address,
initiateTdlsSetup_cb _hidl_cb) override;
Return<void> initiateTdlsTeardown(
- const hidl_array<uint8_t, 6 /* 6 */>& mac_address,
+ const hidl_array<uint8_t, 6>& mac_address,
initiateTdlsTeardown_cb _hidl_cb) override;
private:
+ // Corresponding worker functions for the HIDL methods.
+ std::pair<SupplicantStatus, std::string> getNameInternal();
+ std::pair<SupplicantStatus, IfaceType> getTypeInternal();
+ std::pair<SupplicantStatus, sp<ISupplicantNetwork>>
+ addNetworkInternal();
+ SupplicantStatus removeNetworkInternal(SupplicantNetworkId id);
+ std::pair<SupplicantStatus, sp<ISupplicantNetwork>> getNetworkInternal(
+ SupplicantNetworkId id);
+ std::pair<SupplicantStatus, std::vector<SupplicantNetworkId>>
+ listNetworksInternal();
+ SupplicantStatus registerCallbackInternal(
+ const sp<ISupplicantStaIfaceCallback>& callback);
+ SupplicantStatus reassociateInternal();
+ SupplicantStatus reconnectInternal();
+ SupplicantStatus disconnectInternal();
+ SupplicantStatus setPowerSaveInternal(bool enable);
+ SupplicantStatus initiateTdlsDiscoverInternal(
+ const std::array<uint8_t, 6>& mac_address);
+ SupplicantStatus initiateTdlsSetupInternal(
+ const std::array<uint8_t, 6>& mac_address);
+ SupplicantStatus initiateTdlsTeardownInternal(
+ const std::array<uint8_t, 6>& mac_address);
+
struct wpa_supplicant* retrieveIfacePtr();
// Reference to the global wpa_struct. This is assumed to be valid for
@@ -78,6 +119,7 @@
const struct wpa_global* wpa_global_;
// Name of the iface this hidl object controls
const std::string ifname_;
+ bool is_valid_;
DISALLOW_COPY_AND_ASSIGN(StaIface);
};