Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a47c187 authored by Roshan Pius's avatar Roshan Pius
Browse files

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
parent 6cedc97e
Loading
Loading
Loading
Loading
+26 −4
Original line number Diff line number Diff line
@@ -143,7 +143,7 @@ std::pair<wifi_error, std::string> 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<wifi_error, std::string> WifiLegacyHal::getFirmwareVersion() {
@@ -151,7 +151,7 @@ std::pair<wifi_error, std::string> 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<wifi_error, std::vector<uint8_t>>
@@ -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<wifi_error, std::vector<uint8_t>>
@@ -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<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() {
+10 −0
Original line number Diff line number Diff line
@@ -33,6 +33,12 @@ namespace legacy_hal {
// 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 @@ class WifiLegacyHal {
  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.