Add a new AIDL API to set Multi-Link Operation mode
Bug: 268235139
Test: m android.hardware.wifi-update-api
Change-Id: Iff3baf64cb6c999eca4e1bfa4af5a41cfb5e4876
diff --git a/wifi/aidl/default/wifi_chip.cpp b/wifi/aidl/default/wifi_chip.cpp
index 41912b5..b4c2ccd 100644
--- a/wifi/aidl/default/wifi_chip.cpp
+++ b/wifi/aidl/default/wifi_chip.cpp
@@ -26,6 +26,7 @@
#include "aidl_return_util.h"
#include "aidl_struct_util.h"
+#include "wifi_legacy_hal.h"
#include "wifi_status_util.h"
#define P2P_MGMT_DEVICE_PREFIX "p2p-dev-"
@@ -699,6 +700,11 @@
in_channelCategoryEnableFlag);
}
+ndk::ScopedAStatus WifiChip::setMloMode(const ChipMloMode in_mode) {
+ return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
+ &WifiChip::setMloModeInternal, in_mode);
+}
+
void WifiChip::invalidateAndRemoveAllIfaces() {
invalidateAndClearBridgedApAll();
invalidateAndClearAll(ap_ifaces_);
@@ -1956,6 +1962,28 @@
return false;
}
+ndk::ScopedAStatus WifiChip::setMloModeInternal(const WifiChip::ChipMloMode in_mode) {
+ legacy_hal::wifi_mlo_mode mode;
+ switch (in_mode) {
+ case WifiChip::ChipMloMode::DEFAULT:
+ mode = legacy_hal::wifi_mlo_mode::WIFI_MLO_MODE_DEFAULT;
+ break;
+ case WifiChip::ChipMloMode::LOW_LATENCY:
+ mode = legacy_hal::wifi_mlo_mode::WIFI_MLO_MODE_LOW_LATENCY;
+ break;
+ case WifiChip::ChipMloMode::HIGH_THROUGHPUT:
+ mode = legacy_hal::wifi_mlo_mode::WIFI_MLO_MODE_HIGH_THROUGHPUT;
+ break;
+ case WifiChip::ChipMloMode::LOW_POWER:
+ mode = legacy_hal::wifi_mlo_mode::WIFI_MLO_MODE_LOW_POWER;
+ break;
+ default:
+ PLOG(ERROR) << "Error: invalid mode: " << toString(in_mode);
+ return createWifiStatus(WifiStatusCode::ERROR_INVALID_ARGS);
+ }
+ return createWifiStatusFromLegacyError(legacy_hal_.lock()->setMloMode(mode));
+}
+
} // namespace wifi
} // namespace hardware
} // namespace android