wifi: Few minor interface changes

Changes in the CL:
1. Add the buckets scanned bitmask to bgscan.
2. exposed the legacy HAL constants for Bgscan in the HIDL interface.
3. Add a stop method for ring buffer logging.

Bug: 35752950
Bug: 33194311
Test: Compiles
Change-Id: Idb2031c33c5a237d7447410fb733f8e408a17288
This commit is contained in:
Roshan Pius
2017-02-24 08:07:42 -08:00
parent b541affafb
commit 8c0c8e9aa0
7 changed files with 51 additions and 7 deletions

View File

@@ -628,6 +628,19 @@ interface IWifiChip {
*/
forceDumpToDebugRingBuffer(string ringName) generates (WifiStatus status);
/**
* API to stop the debug data collection for all ring buffers.
*
* @return status WifiStatus of the operation.
* Possible status codes:
* |WifiStatusCode.SUCCESS|,
* |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|,
* |WifiStatusCode.ERROR_NOT_SUPPORTED|,
* |WifiStatusCode.NOT_AVAILABLE|,
* |WifiStatusCode.UNKNOWN|
*/
stopLoggingToDebugRingBuffer() generates (WifiStatus status);
/**
* API to retrieve the wifi wake up reason stats for debugging.
* The driver is expected to start maintaining these stats once the chip

View File

@@ -31,9 +31,12 @@ interface IWifiStaIfaceEventCallback {
* |StaBackgroundScanBucketParameters.eventReportScheme|.
*
* @param cmdId command ID corresponding to the request.
* @param bucketsScanned Bitset where each bit indicates if the bucket with
* that index (starting at 0) was scanned.
* @parm result Full scan result for an AP.
*/
oneway onBackgroundFullScanResult(CommandId cmdId, StaScanResult result);
oneway onBackgroundFullScanResult(
CommandId cmdId, uint32_t bucketsScanned, StaScanResult result);
/**
* Called when the |StaBackgroundScanBucketParameters.eventReportScheme| flags

View File

@@ -338,7 +338,6 @@ bool convertHidlGscanParamsToLegacy(
hidl_scan_params.reportThresholdPercent;
legacy_scan_params->report_threshold_num_scans =
hidl_scan_params.reportThresholdNumScans;
// TODO(b/33194311): Expose these max limits in the HIDL interface.
if (hidl_scan_params.buckets.size() > MAX_BUCKETS) {
return false;
}
@@ -366,7 +365,6 @@ bool convertHidlGscanParamsToLegacy(
convertHidlGscanReportEventFlagToLegacy(flag);
}
}
// TODO(b/33194311): Expose these max limits in the HIDL interface.
if (hidl_bucket_spec.frequencies.size() > MAX_CHANNELS) {
return false;
}

View File

@@ -317,6 +317,14 @@ Return<void> WifiChip::forceDumpToDebugRingBuffer(
ring_name);
}
Return<void> WifiChip::stopLoggingToDebugRingBuffer(
stopLoggingToDebugRingBuffer_cb hidl_status_cb) {
return validateAndCall(this,
WifiStatusCode::ERROR_WIFI_CHIP_INVALID,
&WifiChip::stopLoggingToDebugRingBufferInternal,
hidl_status_cb);
}
Return<void> WifiChip::getDebugHostWakeReasonStats(
getDebugHostWakeReasonStats_cb hidl_status_cb) {
return validateAndCall(this,
@@ -735,6 +743,12 @@ WifiStatus WifiChip::forceDumpToDebugRingBufferInternal(
return createWifiStatusFromLegacyError(legacy_status);
}
WifiStatus WifiChip::stopLoggingToDebugRingBufferInternal() {
legacy_hal::wifi_error legacy_status =
legacy_hal_.lock()->deregisterRingBufferCallbackHandler();
return createWifiStatusFromLegacyError(legacy_status);
}
std::pair<WifiStatus, WifiDebugHostWakeReasonStats>
WifiChip::getDebugHostWakeReasonStatsInternal() {
legacy_hal::wifi_error legacy_status;

View File

@@ -119,6 +119,8 @@ class WifiChip : public IWifiChip {
Return<void> forceDumpToDebugRingBuffer(
const hidl_string& ring_name,
forceDumpToDebugRingBuffer_cb hidl_status_cb) override;
Return<void> stopLoggingToDebugRingBuffer(
stopLoggingToDebugRingBuffer_cb hidl_status_cb) override;
Return<void> getDebugHostWakeReasonStats(
getDebugHostWakeReasonStats_cb hidl_status_cb) override;
Return<void> enableDebugErrorAlerts(
@@ -170,6 +172,7 @@ class WifiChip : public IWifiChip {
uint32_t max_interval_in_sec,
uint32_t min_data_size_in_bytes);
WifiStatus forceDumpToDebugRingBufferInternal(const hidl_string& ring_name);
WifiStatus stopLoggingToDebugRingBufferInternal();
std::pair<WifiStatus, WifiDebugHostWakeReasonStats>
getDebugHostWakeReasonStatsInternal();
WifiStatus enableDebugErrorAlertsInternal(bool enable);

View File

@@ -415,7 +415,7 @@ WifiStatus WifiStaIface::startBackgroundScanInternal(
const auto& on_full_result_callback = [weak_ptr_this](
legacy_hal::wifi_request_id id,
const legacy_hal::wifi_scan_result* result,
uint32_t /* buckets_scanned */) {
uint32_t buckets_scanned) {
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";
@@ -428,7 +428,8 @@ WifiStatus WifiStaIface::startBackgroundScanInternal(
return;
}
for (const auto& callback : shared_ptr_this->getEventCallbacks()) {
if (!callback->onBackgroundFullScanResult(id, hidl_scan_result).isOk()) {
if (!callback->onBackgroundFullScanResult(
id, buckets_scanned, hidl_scan_result).isOk()) {
LOG(ERROR) << "Failed to invoke onBackgroundFullScanResult callback";
}
}

View File

@@ -305,6 +305,15 @@ enum StaBackgroundScanBucketEventReportSchemeMask : uint32_t {
NO_BATCH = 1 << 2,
};
/**
* Max limits for background scan.
*/
enum StaScanLimits : uint32_t {
MAX_CHANNELS = 16,
MAX_BUCKETS = 16,
MAX_AP_CACHE_PER_SCAN = 32
};
/**
* Background Scan parameters per bucket that can be specified in background
* scan requests.
@@ -318,6 +327,7 @@ struct StaBackgroundScanBucketParameters {
/**
* Channel frequencies (in Mhz) to scan if |band| is set to
* |BAND_UNSPECIFIED|.
* Max length: |StaScanLimits.MAX_CHANNELS|.
*/
vec<WifiChannelInMhz> frequencies;
/**
@@ -361,6 +371,7 @@ struct StaBackgroundScanParameters {
/**
* Maximum number of APs that must be stored for each scan. If the maximum
* is reached the highest RSSI results must be returned.
* Max length: |StaScanLimits.MAX_AP_CACHE_PER_SCAN|.
*/
uint32_t maxApPerScan;
/**
@@ -374,6 +385,7 @@ struct StaBackgroundScanParameters {
uint32_t reportThresholdNumScans;
/**
* List of buckets to be scheduled.
* Max length: |StaScanLimits.MAX_BUCKETS|.
*/
vec<StaBackgroundScanBucketParameters> buckets;
};
@@ -506,8 +518,8 @@ struct StaScanData {
*/
bitfield<StaScanDataFlagMask> flags;
/**
* Bitset where each bit indicates if the bucket with that index was
* scanned.
* Bitset where each bit indicates if the bucket with that index (starting at
* 0) was scanned.
*/
uint32_t bucketsScanned;
/**