From 0a47c187b96714561c819d4e2b7f7529c58f1adf Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Fri, 28 Oct 2016 10:23:00 -0700 Subject: [PATCH] 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 --- wifi/1.0/default/wifi_legacy_hal.cpp | 30 ++++++++++++++++++++++++---- wifi/1.0/default/wifi_legacy_hal.h | 10 ++++++++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/wifi/1.0/default/wifi_legacy_hal.cpp b/wifi/1.0/default/wifi_legacy_hal.cpp index a27f131ce8..28b7f9a21b 100644 --- a/wifi/1.0/default/wifi_legacy_hal.cpp +++ b/wifi/1.0/default/wifi_legacy_hal.cpp @@ -143,7 +143,7 @@ std::pair WifiLegacyHal::getDriverVersion() { 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 WifiLegacyHal::getFirmwareVersion() { @@ -151,7 +151,7 @@ std::pair WifiLegacyHal::getFirmwareVersion() { 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> @@ -166,7 +166,7 @@ WifiLegacyHal::requestDriverMemoryDump() { 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> @@ -181,7 +181,29 @@ WifiLegacyHal::requestFirmwareMemoryDump() { 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 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(set)}; +} + +std::pair +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& 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 7957c14d87..8bd146a167 100644 --- a/wifi/1.0/default/wifi_legacy_hal.h +++ b/wifi/1.0/default/wifi_legacy_hal.h @@ -33,6 +33,12 @@ namespace legacy_hal { // namespace. #include +// 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 @@ class WifiLegacyHal { std::pair getFirmwareVersion(); std::pair> requestDriverMemoryDump(); std::pair> requestFirmwareMemoryDump(); + std::pair getSupportedFeatureSet(); + // APF functions. + std::pair getPacketFilterCapabilities(); + wifi_error setPacketFilter(const std::vector& program); private: // Retrieve the interface handle to be used for the "wlan" interface.