diff options
author | Patrik Fimml <patrikf@google.com> | 2019-09-11 14:31:56 +0200 |
---|---|---|
committer | Patrik Fimml <patrikf@google.com> | 2019-10-08 13:12:18 +0200 |
commit | c919f9657eaaab19a050cf96a7b23e45a502fc89 (patch) | |
tree | 3c622bdc5a1f5ad8e3316e6d27da5a5b98276c68 /wifi/1.4/default/wifi_ap_iface.cpp | |
parent | 7477c9632ac743885cdd8a46b37ea9405c5f3292 (diff) |
Add IWifiApIface@1.4 (configurable MAC address)
Mirrors the methods and tests introduced in IWifiStaIface@1.2 and @1.3.
Android.bp generated with
$ hidl-gen -o . -Landroidbp -randroid.hardware:hardware/interfaces android.hardware.wifi@1.4
Bug: 132705022
Test: make vts && vts-tradefed run vts-host --skip-preconditions --primary-abi-only --module VtsHalWifiV1_4Host
Change-Id: Iddacd2770c59522001673d10daafd3bbed3844f6
Diffstat (limited to 'wifi/1.4/default/wifi_ap_iface.cpp')
-rw-r--r-- | wifi/1.4/default/wifi_ap_iface.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/wifi/1.4/default/wifi_ap_iface.cpp b/wifi/1.4/default/wifi_ap_iface.cpp index 13ce2dddcb..b8609106b6 100644 --- a/wifi/1.4/default/wifi_ap_iface.cpp +++ b/wifi/1.4/default/wifi_ap_iface.cpp @@ -85,6 +85,20 @@ Return<void> WifiApIface::getValidFrequenciesForBand( hidl_status_cb, band); } +Return<void> WifiApIface::setMacAddress(const hidl_array<uint8_t, 6>& mac, + setMacAddress_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiApIface::setMacAddressInternal, hidl_status_cb, + mac); +} + +Return<void> WifiApIface::getFactoryMacAddress( + getFactoryMacAddress_cb hidl_status_cb) { + return validateAndCall(this, WifiStatusCode::ERROR_WIFI_IFACE_INVALID, + &WifiApIface::getFactoryMacAddressInternal, + hidl_status_cb); +} + std::pair<WifiStatus, std::string> WifiApIface::getNameInternal() { return {createWifiStatus(WifiStatusCode::SUCCESS), ifname_}; } @@ -111,6 +125,26 @@ WifiApIface::getValidFrequenciesForBandInternal(WifiBand band) { ifname_, hidl_struct_util::convertHidlWifiBandToLegacy(band)); return {createWifiStatusFromLegacyError(legacy_status), valid_frequencies}; } + +WifiStatus WifiApIface::setMacAddressInternal( + const std::array<uint8_t, 6>& mac) { + bool status = iface_util_.lock()->setMacAddress(ifname_, mac); + if (!status) { + return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN); + } + return createWifiStatus(WifiStatusCode::SUCCESS); +} + +std::pair<WifiStatus, std::array<uint8_t, 6>> +WifiApIface::getFactoryMacAddressInternal() { + std::array<uint8_t, 6> mac = + iface_util_.lock()->getFactoryMacAddress(ifname_); + if (mac[0] == 0 && mac[1] == 0 && mac[2] == 0 && mac[3] == 0 && + mac[4] == 0 && mac[5] == 0) { + return {createWifiStatus(WifiStatusCode::ERROR_UNKNOWN), mac}; + } + return {createWifiStatus(WifiStatusCode::SUCCESS), mac}; +} } // namespace implementation } // namespace V1_4 } // namespace wifi |