Add a new AIDL API for wifi indoor/dfs channel usage
In the API, we can enable/disalbe STA-connected indoor or DFS channels for WFA GO, SAP and Wi-Fi Aware.
Bug: 207669954
Test: m android.hardware.wifi-update-api
Change-Id: I8513bc265fe8fc4f43d9e4b508d8c361f3455fd7
diff --git a/wifi/aidl/default/wifi_chip.cpp b/wifi/aidl/default/wifi_chip.cpp
index 4061699..5597001 100644
--- a/wifi/aidl/default/wifi_chip.cpp
+++ b/wifi/aidl/default/wifi_chip.cpp
@@ -34,6 +34,7 @@
using aidl::android::hardware::wifi::IfaceType;
using aidl::android::hardware::wifi::IWifiChip;
using CoexRestriction = aidl::android::hardware::wifi::IWifiChip::CoexRestriction;
+using ChannelCategoryMask = aidl::android::hardware::wifi::IWifiChip::ChannelCategoryMask;
using android::base::unique_fd;
constexpr char kCpioMagic[] = "070701";
@@ -685,6 +686,13 @@
&WifiChip::getWifiChipCapabilitiesInternal, _aidl_return);
}
+ndk::ScopedAStatus WifiChip::enableStaChannelForPeerNetwork(
+ ChannelCategoryMask in_channelCategoryEnableFlag) {
+ return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
+ &WifiChip::enableStaChannelForPeerNetworkInternal,
+ in_channelCategoryEnableFlag);
+}
+
void WifiChip::invalidateAndRemoveAllIfaces() {
invalidateAndClearBridgedApAll();
invalidateAndClearAll(ap_ifaces_);
@@ -1428,6 +1436,14 @@
return {aidl_chip_capabilities, ndk::ScopedAStatus::ok()};
}
+ndk::ScopedAStatus WifiChip::enableStaChannelForPeerNetworkInternal(
+ ChannelCategoryMask channelCategoryEnableFlag) {
+ auto legacy_status = legacy_hal_.lock()->enableStaChannelForPeerNetwork(
+ aidl_struct_util::convertAidlChannelCategoryToLegacy(
+ static_cast<uint32_t>(channelCategoryEnableFlag)));
+ return createWifiStatusFromLegacyError(legacy_status);
+}
+
ndk::ScopedAStatus WifiChip::triggerSubsystemRestartInternal() {
auto legacy_status = legacy_hal_.lock()->triggerSubsystemRestart();
return createWifiStatusFromLegacyError(legacy_status);