wifi: Add APF/feature-set wrappers in WifiLegacyHal
Add wrappers for retrieving the feature set supported by the device &
APF functionality.
Bug: 31991459
Test: Compiles
Change-Id: I34b8896a21e34f688374750faefd589eca2a4de1
diff --git a/wifi/1.0/default/wifi_legacy_hal.cpp b/wifi/1.0/default/wifi_legacy_hal.cpp
index a27f131..28b7f9a 100644
--- a/wifi/1.0/default/wifi_legacy_hal.cpp
+++ b/wifi/1.0/default/wifi_legacy_hal.cpp
@@ -143,7 +143,7 @@
buffer.fill(0);
wifi_error status = global_func_table_.wifi_get_driver_version(
wlan_interface_handle_, buffer.data(), buffer.size());
- return std::make_pair(status, buffer.data());
+ return {status, buffer.data()};
}
std::pair<wifi_error, std::string> WifiLegacyHal::getFirmwareVersion() {
@@ -151,7 +151,7 @@
buffer.fill(0);
wifi_error status = global_func_table_.wifi_get_firmware_version(
wlan_interface_handle_, buffer.data(), buffer.size());
- return std::make_pair(status, buffer.data());
+ return {status, buffer.data()};
}
std::pair<wifi_error, std::vector<uint8_t>>
@@ -166,7 +166,7 @@
wifi_error status = global_func_table_.wifi_get_driver_memory_dump(
wlan_interface_handle_, {onDriverMemoryDump});
on_driver_memory_dump_internal_callback = nullptr;
- return std::make_pair(status, std::move(driver_dump));
+ return {status, std::move(driver_dump)};
}
std::pair<wifi_error, std::vector<uint8_t>>
@@ -181,7 +181,29 @@
wifi_error status = global_func_table_.wifi_get_firmware_memory_dump(
wlan_interface_handle_, {onFirmwareMemoryDump});
on_firmware_memory_dump_internal_callback = nullptr;
- return std::make_pair(status, std::move(firmware_dump));
+ return {status, std::move(firmware_dump)};
+}
+
+std::pair<wifi_error, uint32_t> WifiLegacyHal::getSupportedFeatureSet() {
+ feature_set set;
+ static_assert(sizeof(set) == sizeof(uint32_t),
+ "Some features can not be represented in output");
+ wifi_error status = global_func_table_.wifi_get_supported_feature_set(
+ wlan_interface_handle_, &set);
+ return {status, static_cast<uint32_t>(set)};
+}
+
+std::pair<wifi_error, PacketFilterCapabilities>
+WifiLegacyHal::getPacketFilterCapabilities() {
+ PacketFilterCapabilities caps;
+ wifi_error status = global_func_table_.wifi_get_packet_filter_capabilities(
+ wlan_interface_handle_, &caps.version, &caps.max_len);
+ return {status, caps};
+}
+
+wifi_error WifiLegacyHal::setPacketFilter(const std::vector<uint8_t>& program) {
+ return global_func_table_.wifi_set_packet_filter(
+ wlan_interface_handle_, program.data(), program.size());
}
wifi_error WifiLegacyHal::retrieveWlanInterfaceHandle() {
diff --git a/wifi/1.0/default/wifi_legacy_hal.h b/wifi/1.0/default/wifi_legacy_hal.h
index 7957c14..8bd146a 100644
--- a/wifi/1.0/default/wifi_legacy_hal.h
+++ b/wifi/1.0/default/wifi_legacy_hal.h
@@ -33,6 +33,12 @@
// namespace.
#include <hardware_legacy/wifi_hal.h>
+// APF capabilities supported by the iface.
+struct PacketFilterCapabilities {
+ uint32_t version;
+ uint32_t max_len;
+};
+
/**
* Class that encapsulates all legacy HAL interactions.
* This class manages the lifetime of the event loop thread used by legacy HAL.
@@ -55,6 +61,10 @@
std::pair<wifi_error, std::string> getFirmwareVersion();
std::pair<wifi_error, std::vector<uint8_t>> requestDriverMemoryDump();
std::pair<wifi_error, std::vector<uint8_t>> requestFirmwareMemoryDump();
+ std::pair<wifi_error, uint32_t> getSupportedFeatureSet();
+ // APF functions.
+ std::pair<wifi_error, PacketFilterCapabilities> getPacketFilterCapabilities();
+ wifi_error setPacketFilter(const std::vector<uint8_t>& program);
private:
// Retrieve the interface handle to be used for the "wlan" interface.