summaryrefslogtreecommitdiff
path: root/wifi/1.4/default/wifi_ap_iface.cpp
diff options
context:
space:
mode:
authorPatrik Fimml <patrikf@google.com>2019-09-11 14:31:56 +0200
committerPatrik Fimml <patrikf@google.com>2019-10-08 13:12:18 +0200
commitc919f9657eaaab19a050cf96a7b23e45a502fc89 (patch)
tree3c622bdc5a1f5ad8e3316e6d27da5a5b98276c68 /wifi/1.4/default/wifi_ap_iface.cpp
parent7477c9632ac743885cdd8a46b37ea9405c5f3292 (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.cpp34
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