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

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

wifi: Debug ring buffer data collection

am: 48185b2a

Change-Id: Ia692dbe8f96a3a580460153468951215828bfb65
parents 41669e8d 48185b2a
Loading
Loading
Loading
Loading
+0 −342
Original line number Diff line number Diff line
@@ -1878,177 +1878,6 @@ $(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (WifiDebugRingEntryConnectivityEvent)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryConnectivityEvent.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.WifiDebugRingEntryConnectivityEvent

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

#
# Build types.hal (WifiDebugRingEntryEventTlv)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryEventTlv.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.WifiDebugRingEntryEventTlv

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

#
# Build types.hal (WifiDebugRingEntryEventTlvType)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryEventTlvType.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.WifiDebugRingEntryEventTlvType

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

#
# Build types.hal (WifiDebugRingEntryEventType)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryEventType.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.WifiDebugRingEntryEventType

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

#
# Build types.hal (WifiDebugRingEntryFlags)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryFlags.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.WifiDebugRingEntryFlags

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

#
# Build types.hal (WifiDebugRingEntryHeader)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryHeader.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.WifiDebugRingEntryHeader

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

#
# Build types.hal (WifiDebugRingEntryPowerEvent)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryPowerEvent.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.WifiDebugRingEntryPowerEvent

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

#
# Build types.hal (WifiDebugRingEntryVendorData)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryVendorData.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.WifiDebugRingEntryVendorData

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

#
# Build types.hal (WifiDebugRingEntryWakelockEvent)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryWakelockEvent.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.WifiDebugRingEntryWakelockEvent

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

#
# Build types.hal (WifiDebugRxPacketFate)
#
@@ -4420,177 +4249,6 @@ $(GEN): $(LOCAL_PATH)/types.hal
	$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN)

#
# Build types.hal (WifiDebugRingEntryConnectivityEvent)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryConnectivityEvent.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.WifiDebugRingEntryConnectivityEvent

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

#
# Build types.hal (WifiDebugRingEntryEventTlv)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryEventTlv.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.WifiDebugRingEntryEventTlv

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

#
# Build types.hal (WifiDebugRingEntryEventTlvType)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryEventTlvType.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.WifiDebugRingEntryEventTlvType

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

#
# Build types.hal (WifiDebugRingEntryEventType)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryEventType.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.WifiDebugRingEntryEventType

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

#
# Build types.hal (WifiDebugRingEntryFlags)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryFlags.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.WifiDebugRingEntryFlags

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

#
# Build types.hal (WifiDebugRingEntryHeader)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryHeader.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.WifiDebugRingEntryHeader

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

#
# Build types.hal (WifiDebugRingEntryPowerEvent)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryPowerEvent.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.WifiDebugRingEntryPowerEvent

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

#
# Build types.hal (WifiDebugRingEntryVendorData)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryVendorData.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.WifiDebugRingEntryVendorData

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

#
# Build types.hal (WifiDebugRingEntryWakelockEvent)
#
GEN := $(intermediates)/android/hardware/wifi/V1_0/WifiDebugRingEntryWakelockEvent.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.WifiDebugRingEntryWakelockEvent

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

#
# Build types.hal (WifiDebugRxPacketFate)
#
+1 −1
Original line number Diff line number Diff line
@@ -558,7 +558,7 @@ interface IWifiChip {
   *   ring. The vebose level for each ring buffer can be specified in this API.
   * - During wifi operations, driver must periodically report per ring data to
   *   framework by invoking the
   *   |IWifiChipEventCallback.onDebugRingBuffer<Type>EntriesAvailable| callback.
   *   |IWifiChipEventCallback.onDebugRingBufferDataAvailable| callback.
   * - When capturing a bug report, framework must indicate to driver that all
   *   the data has to be uploaded urgently by calling
   *   |forceDumpToDebugRingBuffer|.
+4 −21
Original line number Diff line number Diff line
@@ -74,28 +74,11 @@ interface IWifiChipEventCallback {
   * @return status Status of the corresponding ring buffer. This should
   *         contain the name of the ring buffer on which the data is
   *         available.
   * @return entries Vector of debug ring buffer data entries. These
   *         should be parsed based on the type of entry.
   * @return data Raw bytes of data sent by the driver. Must be dumped
   *         out to a bugreport and post processed.
   */
  /** Connectivity event data callback */
  oneway onDebugRingBufferConnectivityEventEntriesAvailable(
      WifiDebugRingBufferStatus status,
      vec<WifiDebugRingEntryConnectivityEvent> entries);

  /** Power event data callback */
  oneway onDebugRingBufferPowerEventEntriesAvailable(
      WifiDebugRingBufferStatus status,
      vec<WifiDebugRingEntryPowerEvent> entries);

  /** Wakelock event data callback */
  oneway onDebugRingBufferWakelockEventEntriesAvailable(
      WifiDebugRingBufferStatus status,
      vec<WifiDebugRingEntryWakelockEvent> entries);

  /** Vendor data event data callback */
  oneway onDebugRingBufferVendorDataEntriesAvailable(
      WifiDebugRingBufferStatus status,
      vec<WifiDebugRingEntryVendorData> entries);
  oneway onDebugRingBufferDataAvailable(
      WifiDebugRingBufferStatus status, vec<uint8_t> data);

  /**
   * Callback indicating that the chip has encountered a fatal error.
+3 −0
Original line number Diff line number Diff line
@@ -39,6 +39,9 @@ namespace hidl_struct_util {
// Chip conversion methods.
bool convertLegacyFeaturesToHidlChipCapabilities(
    uint32_t legacy_logger_feature_set, uint32_t* hidl_caps);
bool convertLegacyDebugRingBufferStatusToHidl(
    const legacy_hal::wifi_ring_buffer_status& legacy_status,
    WifiDebugRingBufferStatus* hidl_status);
bool convertLegacyVectorOfDebugRingBufferStatusToHidl(
    const std::vector<legacy_hal::wifi_ring_buffer_status>& legacy_status_vec,
    std::vector<WifiDebugRingBufferStatus>* hidl_status_vec);
+46 −1
Original line number Diff line number Diff line
@@ -57,7 +57,8 @@ WifiChip::WifiChip(
      legacy_hal_(legacy_hal),
      mode_controller_(mode_controller),
      is_valid_(true),
      current_mode_id_(kInvalidModeId) {}
      current_mode_id_(kInvalidModeId),
      debug_ring_buffer_cb_registered_(false) {}

void WifiChip::invalidate() {
  invalidateAndRemoveAllIfaces();
@@ -687,6 +688,10 @@ WifiStatus WifiChip::startLoggingToDebugRingBufferInternal(
    WifiDebugRingBufferVerboseLevel verbose_level,
    uint32_t max_interval_in_sec,
    uint32_t min_data_size_in_bytes) {
  WifiStatus status = registerDebugRingBufferCallback();
  if (status.code != WifiStatusCode::SUCCESS) {
    return status;
  }
  legacy_hal::wifi_error legacy_status =
      legacy_hal_.lock()->startRingBufferLogging(
          ring_name,
@@ -700,6 +705,10 @@ WifiStatus WifiChip::startLoggingToDebugRingBufferInternal(

WifiStatus WifiChip::forceDumpToDebugRingBufferInternal(
    const hidl_string& ring_name) {
  WifiStatus status = registerDebugRingBufferCallback();
  if (status.code != WifiStatusCode::SUCCESS) {
    return status;
  }
  legacy_hal::wifi_error legacy_status =
      legacy_hal_.lock()->getRingBufferData(ring_name);
  return createWifiStatusFromLegacyError(legacy_status);
@@ -774,6 +783,42 @@ WifiStatus WifiChip::handleChipConfiguration(ChipModeId mode_id) {
  }
  return createWifiStatus(WifiStatusCode::SUCCESS);
}

WifiStatus WifiChip::registerDebugRingBufferCallback() {
  if (debug_ring_buffer_cb_registered_) {
    return createWifiStatus(WifiStatusCode::SUCCESS);
  }

  android::wp<WifiChip> weak_ptr_this(this);
  const auto& on_ring_buffer_data_callback = [weak_ptr_this](
      const std::string& /* name */,
      const std::vector<uint8_t>& data,
      const legacy_hal::wifi_ring_buffer_status& status) {
    const auto shared_ptr_this = weak_ptr_this.promote();
    if (!shared_ptr_this.get() || !shared_ptr_this->isValid()) {
      LOG(ERROR) << "Callback invoked on an invalid object";
      return;
    }
    WifiDebugRingBufferStatus hidl_status;
    if (!hidl_struct_util::convertLegacyDebugRingBufferStatusToHidl(
            status, &hidl_status)) {
      LOG(ERROR) << "Error converting ring buffer status";
      return;
    }
    for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
      callback->onDebugRingBufferDataAvailable(hidl_status, data);
    }
  };
  legacy_hal::wifi_error legacy_status =
      legacy_hal_.lock()->registerRingBufferCallbackHandler(
          on_ring_buffer_data_callback);

  if (legacy_status == legacy_hal::WIFI_SUCCESS) {
    debug_ring_buffer_cb_registered_ = true;
  }
  return createWifiStatusFromLegacyError(legacy_status);
}

}  // namespace implementation
}  // namespace V1_0
}  // namespace wifi
Loading