wpa_supplicant(hidl): Use hidl_return_util in |P2pNetwork|
Use the new helper functions in all |ISupplicantP2pNetwork| methods.
Bug: 32869248
Test: Compiles
Change-Id: Ia1e40e1dd8ec4aa94abb6264bc28dd31f74bd1e1
diff --git a/wpa_supplicant/hidl/p2p_network.cpp b/wpa_supplicant/hidl/p2p_network.cpp
index 7de950e..ce02179 100644
--- a/wpa_supplicant/hidl/p2p_network.cpp
+++ b/wpa_supplicant/hidl/p2p_network.cpp
@@ -8,7 +8,7 @@
*/
#include "hidl_manager.h"
-#include "hidl_return_macros.h"
+#include "hidl_return_util.h"
#include "p2p_network.h"
namespace android {
@@ -17,65 +17,78 @@
namespace supplicant {
namespace V1_0 {
namespace implementation {
+using hidl_return_util::validateAndCall;
P2pNetwork::P2pNetwork(
struct wpa_global *wpa_global, const char ifname[], int network_id)
- : wpa_global_(wpa_global), ifname_(ifname), network_id_(network_id)
+ : wpa_global_(wpa_global),
+ ifname_(ifname),
+ network_id_(network_id),
+ is_valid_(true)
{
}
+void P2pNetwork::invalidate() { is_valid_ = false; }
+bool P2pNetwork::isValid()
+{
+ return (is_valid_ && (retrieveNetworkPtr() != nullptr));
+}
+
Return<void> P2pNetwork::getId(getId_cb _hidl_cb)
{
- uint32_t id = UINT32_MAX;
- struct wpa_ssid *wpa_ssid = retrieveNetworkPtr();
- if (!wpa_ssid) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_NETWORK_INVALID, id);
- }
-
- id = network_id_;
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, id);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_NETWORK_INVALID,
+ &P2pNetwork::getIdInternal, _hidl_cb);
}
Return<void> P2pNetwork::getInterfaceName(getInterfaceName_cb _hidl_cb)
{
- struct wpa_ssid *wpa_ssid = retrieveNetworkPtr();
- if (!wpa_ssid) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_NETWORK_INVALID, ifname_);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, ifname_);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_NETWORK_INVALID,
+ &P2pNetwork::getInterfaceNameInternal, _hidl_cb);
}
Return<void> P2pNetwork::getType(getType_cb _hidl_cb)
{
- struct wpa_ssid *wpa_ssid = retrieveNetworkPtr();
- if (!wpa_ssid) {
- HIDL_RETURN(
- SupplicantStatusCode::FAILURE_IFACE_INVALID,
- IfaceType::P2P);
- }
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS, IfaceType::P2P);
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_NETWORK_INVALID,
+ &P2pNetwork::getTypeInternal, _hidl_cb);
}
Return<void> P2pNetwork::registerCallback(
const sp<ISupplicantP2pNetworkCallback> &callback,
registerCallback_cb _hidl_cb)
{
- struct wpa_ssid *wpa_ssid = retrieveNetworkPtr();
- if (!wpa_ssid) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_NETWORK_INVALID);
- }
+ return validateAndCall(
+ this, SupplicantStatusCode::FAILURE_NETWORK_INVALID,
+ &P2pNetwork::registerCallbackInternal, _hidl_cb, callback);
+}
+std::pair<SupplicantStatus, uint32_t> P2pNetwork::getIdInternal()
+{
+ return {{SupplicantStatusCode::SUCCESS, ""}, network_id_};
+}
+
+std::pair<SupplicantStatus, std::string> P2pNetwork::getInterfaceNameInternal()
+{
+ return {{SupplicantStatusCode::SUCCESS, ""}, ifname_};
+}
+
+std::pair<SupplicantStatus, IfaceType> P2pNetwork::getTypeInternal()
+{
+ return {{SupplicantStatusCode::SUCCESS, ""}, IfaceType::P2P};
+}
+
+SupplicantStatus P2pNetwork::registerCallbackInternal(
+ const sp<ISupplicantP2pNetworkCallback> &callback)
+{
HidlManager *hidl_manager = HidlManager::getInstance();
if (!hidl_manager ||
hidl_manager->addP2pNetworkCallbackHidlObject(
ifname_, network_id_, callback)) {
- HIDL_RETURN(SupplicantStatusCode::FAILURE_UNKNOWN);
+ return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
-
- HIDL_RETURN(SupplicantStatusCode::SUCCESS);
+ return {SupplicantStatusCode::SUCCESS, ""};
}
/**
diff --git a/wpa_supplicant/hidl/p2p_network.h b/wpa_supplicant/hidl/p2p_network.h
index 92eddd2..023e902 100644
--- a/wpa_supplicant/hidl/p2p_network.h
+++ b/wpa_supplicant/hidl/p2p_network.h
@@ -44,6 +44,9 @@
P2pNetwork(
struct wpa_global* wpa_global, const char ifname[], int network_id);
~P2pNetwork() override = default;
+ // Refer to |StaIface::invalidate()|.
+ void invalidate();
+ bool isValid();
// Hidl methods exposed.
Return<void> getId(getId_cb _hidl_cb) override;
@@ -54,6 +57,13 @@
registerCallback_cb _hidl_cb) override;
private:
+ // Corresponding worker functions for the HIDL methods.
+ std::pair<SupplicantStatus, uint32_t> getIdInternal();
+ std::pair<SupplicantStatus, std::string> getInterfaceNameInternal();
+ std::pair<SupplicantStatus, IfaceType> getTypeInternal();
+ SupplicantStatus registerCallbackInternal(
+ const sp<ISupplicantP2pNetworkCallback>& callback);
+
struct wpa_ssid* retrieveNetworkPtr();
struct wpa_supplicant* retrieveIfacePtr();
@@ -64,6 +74,7 @@
const std::string ifname_;
// Id of the network this hidl object controls.
const int network_id_;
+ bool is_valid_;
DISALLOW_COPY_AND_ASSIGN(P2pNetwork);
};