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

Commit 9b1689da authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "wifi(implementation): API to flush HAL ringbuffer to files"

parents c8f63d8a b294c76a
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -66,4 +66,17 @@ interface IWifiChip extends @1.2::IWifiChip {
     * as gaming and virtual reality applications.
     * as gaming and virtual reality applications.
     */
     */
    setLatencyMode(LatencyMode mode) generates (WifiStatus status);
    setLatencyMode(LatencyMode mode) generates (WifiStatus status);

    /**
     * API to flush debug ring buffer data to files.
     *
     * Force flush debug ring buffer using IBase::debug.
     * This API help to collect firmware/driver/pkt logs.
     *
     * @return status WifiStatus of the operation.
     *         Possible status codes:
     *         |WifiStatusCode.SUCCESS|,
     *         |WifiStatusCode.UNKNOWN|
     */
    flushRingBufferToFile() generates (WifiStatus status);
};
};
+17 −2
Original line number Original line Diff line number Diff line
@@ -37,8 +37,8 @@ using android::hardware::wifi::V1_0::IfaceType;
using android::hardware::wifi::V1_0::IWifiChip;
using android::hardware::wifi::V1_0::IWifiChip;


constexpr char kCpioMagic[] = "070701";
constexpr char kCpioMagic[] = "070701";
constexpr size_t kMaxBufferSizeBytes = 1024 * 1024;
constexpr size_t kMaxBufferSizeBytes = 1024 * 1024 * 3;
constexpr uint32_t kMaxRingBufferFileAgeSeconds = 60 * 60;
constexpr uint32_t kMaxRingBufferFileAgeSeconds = 60 * 60 * 10;
constexpr uint32_t kMaxRingBufferFileNum = 20;
constexpr uint32_t kMaxRingBufferFileNum = 20;
constexpr char kTombstoneFolderPath[] = "/data/vendor/tombstones/wifi/";
constexpr char kTombstoneFolderPath[] = "/data/vendor/tombstones/wifi/";


@@ -515,6 +515,13 @@ Return<void> WifiChip::forceDumpToDebugRingBuffer(
                           hidl_status_cb, ring_name);
                           hidl_status_cb, ring_name);
}
}


Return<void> WifiChip::flushRingBufferToFile(
    flushRingBufferToFile_cb hidl_status_cb) {
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
                           &WifiChip::flushRingBufferToFileInternal,
                           hidl_status_cb);
}

Return<void> WifiChip::stopLoggingToDebugRingBuffer(
Return<void> WifiChip::stopLoggingToDebugRingBuffer(
    stopLoggingToDebugRingBuffer_cb hidl_status_cb) {
    stopLoggingToDebugRingBuffer_cb hidl_status_cb) {
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
    return validateAndCall(this, WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
@@ -1000,6 +1007,14 @@ WifiStatus WifiChip::forceDumpToDebugRingBufferInternal(
    return createWifiStatusFromLegacyError(legacy_status);
    return createWifiStatusFromLegacyError(legacy_status);
}
}


WifiStatus WifiChip::flushRingBufferToFileInternal() {
    if (!writeRingbufferFilesInternal()) {
        LOG(ERROR) << "Error writing files to flash";
        return createWifiStatus(WifiStatusCode::ERROR_UNKNOWN);
    }
    return createWifiStatus(WifiStatusCode::SUCCESS);
}

WifiStatus WifiChip::stopLoggingToDebugRingBufferInternal() {
WifiStatus WifiChip::stopLoggingToDebugRingBufferInternal() {
    legacy_hal::wifi_error legacy_status =
    legacy_hal::wifi_error legacy_status =
        legacy_hal_.lock()->deregisterRingBufferCallbackHandler(
        legacy_hal_.lock()->deregisterRingBufferCallbackHandler(
+3 −0
Original line number Original line Diff line number Diff line
@@ -126,6 +126,8 @@ class WifiChip : public V1_3::IWifiChip {
    Return<void> forceDumpToDebugRingBuffer(
    Return<void> forceDumpToDebugRingBuffer(
        const hidl_string& ring_name,
        const hidl_string& ring_name,
        forceDumpToDebugRingBuffer_cb hidl_status_cb) override;
        forceDumpToDebugRingBuffer_cb hidl_status_cb) override;
    Return<void> flushRingBufferToFile(
        flushRingBufferToFile_cb hidl_status_cb) override;
    Return<void> stopLoggingToDebugRingBuffer(
    Return<void> stopLoggingToDebugRingBuffer(
        stopLoggingToDebugRingBuffer_cb hidl_status_cb) override;
        stopLoggingToDebugRingBuffer_cb hidl_status_cb) override;
    Return<void> getDebugHostWakeReasonStats(
    Return<void> getDebugHostWakeReasonStats(
@@ -198,6 +200,7 @@ class WifiChip : public V1_3::IWifiChip {
        WifiDebugRingBufferVerboseLevel verbose_level,
        WifiDebugRingBufferVerboseLevel verbose_level,
        uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes);
        uint32_t max_interval_in_sec, uint32_t min_data_size_in_bytes);
    WifiStatus forceDumpToDebugRingBufferInternal(const hidl_string& ring_name);
    WifiStatus forceDumpToDebugRingBufferInternal(const hidl_string& ring_name);
    WifiStatus flushRingBufferToFileInternal();
    WifiStatus stopLoggingToDebugRingBufferInternal();
    WifiStatus stopLoggingToDebugRingBufferInternal();
    std::pair<WifiStatus, WifiDebugHostWakeReasonStats>
    std::pair<WifiStatus, WifiDebugHostWakeReasonStats>
    getDebugHostWakeReasonStatsInternal();
    getDebugHostWakeReasonStatsInternal();