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

Commit b4642fc4 authored by Roshan Pius's avatar Roshan Pius Committed by android-build-merger
Browse files

wifi: Port over O features to HIDL

am: 26801cb4

Change-Id: I0f2810797098ee186bce25db8d55cbf201b983bb
parents 2255fd62 26801cb4
Loading
Loading
Loading
Loading
+114 −0
Original line number Diff line number Diff line
@@ -1555,6 +1555,63 @@ $(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaRoamingCapabilities)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaRoamingCapabilities.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.wifi@1.0::types.StaRoamingCapabilities

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaRoamingConfig)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaRoamingConfig.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.wifi@1.0::types.StaRoamingConfig

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaRoamingState)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaRoamingState.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.wifi@1.0::types.StaRoamingState

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaScanData)
#
@@ -4040,6 +4097,63 @@ $(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaRoamingCapabilities)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaRoamingCapabilities.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.wifi@1.0::types.StaRoamingCapabilities

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaRoamingConfig)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaRoamingConfig.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.wifi@1.0::types.StaRoamingConfig

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaRoamingState)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/StaRoamingState.java
$(GEN): $(HIDL)
$(GEN): PRIVATE_HIDL := $(HIDL)
$(GEN): PRIVATE_DEPS := $(LOCAL_PATH)/types.hal
$(GEN): PRIVATE_OUTPUT_DIR := $(intermediates)
$(GEN): PRIVATE_CUSTOM_TOOL = \
        $(PRIVATE_HIDL) -o $(PRIVATE_OUTPUT_DIR) \
        -Ljava \
        -randroid.hardware:hardware/interfaces \
        -randroid.hidl:system/libhidl/transport \
        android.hardware.wifi@1.0::types.StaRoamingState

$(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (StaScanData)
#
+59 −1
Original line number Diff line number Diff line
@@ -48,10 +48,22 @@ interface IWifiStaIface extends IWifiIface {
     * If set indicates that the RSSI monitor APIs are supported.
     */
    RSSI_MONITOR = 1 << 3,
    /**
     * If set indicates that the roaming API's are supported.
     */
    CONTROL_ROAMING = 1 << 4,
    /**
     * If set indicates support for Probe IE white listing.
     */
    PROBE_IE_WHITELIST =  1 << 5,
    /**
     * If set indicates support for MAC & Probe Sequence Number randomization.
     */
    SCAN_RAND = 1 << 6,
    /**
     * Tracks connection packets' fate.
     */
    DEBUG_PACKET_FATE_SUPPORTED = 1 << 4
    DEBUG_PACKET_FATE_SUPPORTED = 1 << 7
  };

  /**
@@ -300,6 +312,52 @@ interface IWifiStaIface extends IWifiIface {
   */
  stopRssiMonitoring(CommandId cmdId) generates (WifiStatus status);

  /**
   * Get roaming control capabilities.
   * Must fail if |StaIfaceCapabilityMask.CONTROL_ROAMING| is not set.
   *
   * @return status WifiStatus of the operation.
   *         Possible status codes:
   *         |WifiStatusCode.SUCCESS|,
   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
   *         |WifiStatusCode.ERROR_NOT_SUPPORTED|,
   *         |WifiStatusCode.ERROR_UNKNOWN|
   * @return caps Instance of |StaRoamingCapabilities|.
   */
  getRoamingCapabilities()
      generates (WifiStatus status, StaRoamingCapabilities caps);

  /**
   * Configure roaming control parameters.
   * Must fail if |StaIfaceCapabilityMask.CONTROL_ROAMING| is not set.
   *
   * @param config Instance of |StaRoamingConfig|.
   * @return status WifiStatus of the operation.
   *         Possible status codes:
   *         |WifiStatusCode.SUCCESS|,
   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
   *         |WifiStatusCode.ERROR_NOT_SUPPORTED|,
   *         |WifiStatusCode.ERROR_UNKNOWN|
   */
  configureRoaming(StaRoamingConfig config) generates (WifiStatus status);

  /**
   * Set the roaming control state with the parameters configured
   * using |configureRoaming|. Depending on the roaming state set, the
   * driver/firmware would enable/disable control over roaming decisions.
   * Must fail if |StaIfaceCapabilityMask.CONTROL_ROAMING| is not set.
   *
   * @param state State of the roaming control.
   * @return status WifiStatus of the operation.
   *         Possible status codes:
   *         |WifiStatusCode.SUCCESS|,
   *         |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|,
   *         |WifiStatusCode.ERROR_NOT_SUPPORTED|,
   *         |WifiStatusCode.ERROR_BUSY|,
   *         |WifiStatusCode.ERROR_UNKNOWN|
   */
  setRoamingState(StaRoamingState state) generates (WifiStatus status);

  /**
   * API to start packet fate monitoring.
   * - Once stared, monitoring must remain active until HAL is unloaded.
+59 −1
Original line number Diff line number Diff line
@@ -66,6 +66,12 @@ convertLegacyFeatureToHidlStaIfaceCapability(uint32_t feature) {
      return HidlStaIfaceCaps::LINK_LAYER_STATS;
    case WIFI_FEATURE_RSSI_MONITOR:
      return HidlStaIfaceCaps::RSSI_MONITOR;
    case WIFI_FEATURE_CONTROL_ROAMING:
      return HidlStaIfaceCaps::CONTROL_ROAMING;
    case WIFI_FEATURE_IE_WHITELIST:
      return HidlStaIfaceCaps::PROBE_IE_WHITELIST;
    case WIFI_FEATURE_SCAN_RAND:
      return HidlStaIfaceCaps::SCAN_RAND;
  };
  CHECK(false) << "Unknown legacy feature: " << feature;
  return {};
@@ -214,7 +220,10 @@ bool convertLegacyFeaturesToHidlStaCapabilities(
  }
  for (const auto feature : {WIFI_FEATURE_GSCAN,
                             WIFI_FEATURE_LINK_LAYER_STATS,
                             WIFI_FEATURE_RSSI_MONITOR}) {
                             WIFI_FEATURE_RSSI_MONITOR,
                             WIFI_FEATURE_CONTROL_ROAMING,
                             WIFI_FEATURE_IE_WHITELIST,
                             WIFI_FEATURE_SCAN_RAND}) {
    if (feature & legacy_feature_set) {
      *hidl_caps |= convertLegacyFeatureToHidlStaIfaceCapability(feature);
    }
@@ -669,6 +678,55 @@ bool convertLegacyLinkLayerStatsToHidl(
  return true;
}

bool convertLegacyRoamingCapabilitiesToHidl(
    const legacy_hal::wifi_roaming_capabilities& legacy_caps,
    StaRoamingCapabilities* hidl_caps) {
  if (!hidl_caps) {
    return false;
  }
  hidl_caps->maxBlacklistSize = legacy_caps.max_blacklist_size;
  hidl_caps->maxWhitelistSize = legacy_caps.max_whitelist_size;
  return true;
}

bool convertHidlRoamingConfigToLegacy(
    const StaRoamingConfig& hidl_config,
    legacy_hal::wifi_roaming_config* legacy_config) {
  if (!legacy_config) {
    return false;
  }
  if (hidl_config.bssidBlacklist.size() > MAX_BLACKLIST_BSSID ||
      hidl_config.ssidWhitelist.size() > MAX_WHITELIST_SSID) {
    return false;
  }
  legacy_config->num_blacklist_bssid = hidl_config.bssidBlacklist.size();
  uint32_t i = 0;
  for (const auto& bssid : hidl_config.bssidBlacklist) {
    CHECK(bssid.size() == sizeof(legacy_hal::mac_addr));
    memcpy(legacy_config->blacklist_bssid[i++], bssid.data(), bssid.size());
  }
  legacy_config->num_whitelist_ssid = hidl_config.ssidWhitelist.size();
  i = 0;
  for (const auto& ssid : hidl_config.ssidWhitelist) {
    CHECK(ssid.size() <= sizeof(legacy_hal::ssid_t::ssid_str));
    legacy_config->whitelist_ssid[i].length = ssid.size();
    memcpy(legacy_config->whitelist_ssid[i].ssid_str, ssid.data(), ssid.size());
    i++;
  }
  return true;
}

legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy(
    StaRoamingState state) {
  switch (state) {
    case StaRoamingState::ENABLED:
      return legacy_hal::ROAMING_ENABLE;
    case StaRoamingState::DISABLED:
      return legacy_hal::ROAMING_DISABLE;
  };
  CHECK(false);
}

legacy_hal::NanPublishType convertHidlNanPublishTypeToLegacy(
    NanPublishType type) {
  switch (type) {
+8 −0
Original line number Diff line number Diff line
@@ -75,6 +75,14 @@ bool convertLegacyVectorOfCachedGscanResultsToHidl(
bool convertLegacyLinkLayerStatsToHidl(
    const legacy_hal::LinkLayerStats& legacy_stats,
    StaLinkLayerStats* hidl_stats);
bool convertLegacyRoamingCapabilitiesToHidl(
    const legacy_hal::wifi_roaming_capabilities& legacy_caps,
    StaRoamingCapabilities* hidl_caps);
bool convertHidlRoamingConfigToLegacy(
    const StaRoamingConfig& hidl_config,
    legacy_hal::wifi_roaming_config* legacy_config);
legacy_hal::fw_roaming_state_t convertHidlRoamingStateToLegacy(
    StaRoamingState state);
bool convertLegacyVectorOfDebugTxPacketFateToHidl(
    const std::vector<legacy_hal::wifi_tx_report>& legacy_fates,
    std::vector<WifiDebugTxPacketFateReport>* hidl_fates);
+19 −0
Original line number Diff line number Diff line
@@ -613,6 +613,25 @@ wifi_error WifiLegacyHal::stopRssiMonitoring(wifi_request_id id) {
  return status;
}

std::pair<wifi_error, wifi_roaming_capabilities>
WifiLegacyHal::getRoamingCapabilities() {
  wifi_roaming_capabilities caps;
  wifi_error status = global_func_table_.wifi_get_roaming_capabilities(
      wlan_interface_handle_, &caps);
  return {status, caps};
}

wifi_error WifiLegacyHal::enableFirmwareRoaming(fw_roaming_state_t state) {
  return global_func_table_.wifi_enable_firmware_roaming(wlan_interface_handle_,
                                                         state);
}

wifi_error WifiLegacyHal::configureRoaming(const wifi_roaming_config& config) {
  wifi_roaming_config config_internal = config;
  return global_func_table_.wifi_configure_roaming(wlan_interface_handle_,
                                                   &config_internal);
}

std::pair<wifi_error, uint32_t> WifiLegacyHal::getLoggerSupportedFeatureSet() {
  uint32_t supported_features;
  wifi_error status = global_func_table_.wifi_get_logger_supported_feature_set(
Loading