You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
550 lines
21 KiB
550 lines
21 KiB
/* |
|
* Copyright 2016 The Android Open Source Project |
|
* |
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
* you may not use this file except in compliance with the License. |
|
* You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
package android.hardware.wifi@1.0; |
|
|
|
import IWifiIface; |
|
import IWifiStaIfaceEventCallback; |
|
|
|
/** |
|
* Interface used to represent a single STA iface. |
|
*/ |
|
interface IWifiStaIface extends IWifiIface { |
|
/** |
|
* Mask of capabilities suported by this Iface. |
|
*/ |
|
enum StaIfaceCapabilityMask : uint32_t { |
|
/** |
|
* If set indicates that the APF APIs are supported. |
|
* APF (Android Packet Filter) is a BPF like packet filtering |
|
* bytecode executed by the firmware. |
|
*/ |
|
APF = 1 << 0, |
|
/** |
|
* If set indicates that the Background Scan APIs are supported. |
|
* Background scan allow the host to send a number of buckets down to the |
|
* firmware. Each bucket contains a set of channels, a period, and some |
|
* parameters about how and when to report results. |
|
*/ |
|
BACKGROUND_SCAN = 1 << 1, |
|
/** |
|
* If set indicates that the link layer stats APIs are supported. |
|
*/ |
|
LINK_LAYER_STATS = 1 << 2, |
|
/** |
|
* 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, |
|
/** |
|
* Support for 5 GHz Band. |
|
*/ |
|
STA_5G = 1 << 7, |
|
/** |
|
* Support for GAS/ANQP queries. |
|
*/ |
|
HOTSPOT = 1 << 8, |
|
/** |
|
* Support for Preferred Network Offload. |
|
*/ |
|
PNO = 1 << 9, |
|
/** |
|
* Support for Tunneled Direct Link Setup. |
|
*/ |
|
TDLS = 1 << 10, |
|
/** |
|
* Support for Tunneled Direct Link Setup off channel. |
|
*/ |
|
TDLS_OFFCHANNEL = 1 << 11, |
|
/** |
|
* Support for neighbour discovery offload. |
|
*/ |
|
ND_OFFLOAD = 1 << 12, |
|
/** |
|
* Support for keep alive packet offload. |
|
*/ |
|
KEEP_ALIVE = 1 << 13, |
|
/** |
|
* Support for tracking connection packets' fate. |
|
*/ |
|
DEBUG_PACKET_FATE = 1 << 14 |
|
}; |
|
|
|
/** |
|
* Requests notifications of significant events on this iface. Multiple calls |
|
* to this must register multiple callbacks each of which must receive all |
|
* events. |
|
* |
|
* @param callback An instance of the |IWifiStaIfaceEventCallback| HIDL interface |
|
* object. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID| |
|
*/ |
|
registerEventCallback(IWifiStaIfaceEventCallback callback) |
|
generates (WifiStatus status); |
|
|
|
/** |
|
* Get the capabilities supported by this STA iface. |
|
* |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
* @return capabilities Bitset of |StaIfaceCapabilityMask| values. |
|
*/ |
|
getCapabilities() |
|
generates (WifiStatus status, |
|
bitfield<StaIfaceCapabilityMask> capabilities); |
|
|
|
/** |
|
* Used to query additional information about the chip's APF capabilities. |
|
* Must fail if |StaIfaceCapabilityMask.APF| 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_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
* @return capabilities Instance of |StaApfPacketFilterCapabilities|. |
|
*/ |
|
getApfPacketFilterCapabilities() |
|
generates (WifiStatus status, StaApfPacketFilterCapabilities capabilities); |
|
|
|
/** |
|
* Installs an APF program on this iface, replacing an existing |
|
* program if present. |
|
* Must fail if |StaIfaceCapabilityMask.APF| is not set. |
|
* |
|
* APF docs |
|
* ========================================================================== |
|
* APF functionality, instructions and bytecode/binary format is described in: |
|
* http://android.googlesource.com/platform/hardware/google/apf/ |
|
* +/b75c9f3714cfae3dad3d976958e063150781437e/apf.h |
|
* |
|
* The interpreter API is described here: |
|
* http://android.googlesource.com/platform/hardware/google/apf/+/ |
|
* b75c9f3714cfae3dad3d976958e063150781437e/apf_interpreter.h#32 |
|
* |
|
* The assembler/generator API is described in javadocs here: |
|
* http://android.googlesource.com/platform/frameworks/base/+/ |
|
* 4456f33a958a7f09e608399da83c4d12b2e7d191/services/net/java/android/net/ |
|
* apf/ApfGenerator.java |
|
* |
|
* Disassembler usage is described here: |
|
* http://android.googlesource.com/platform/hardware/google/apf/+/ |
|
* b75c9f3714cfae3dad3d976958e063150781437e/apf_disassembler.c#65 |
|
* |
|
* The BPF to APF translator usage is described here: |
|
* http://android.googlesource.com/platform/frameworks/base/+/ |
|
* 4456f33a958a7f09e608399da83c4d12b2e7d191/tests/net/java/android/net/ |
|
* apf/Bpf2Apf.java |
|
* ========================================================================== |
|
* |
|
* @param cmdId command Id to use for this invocation. |
|
* @param APF Program to be set. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_INVALID_ARGS|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
installApfPacketFilter(CommandId cmdId, vec<uint8_t> program) |
|
generates (WifiStatus status); |
|
|
|
/** |
|
* Used to query additional information about the chip's Background Scan capabilities. |
|
* Must fail if |StaIfaceCapabilityMask.BACKGROUND_SCAN| 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_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
* @return capabilities Instance of |StaBackgroundScanCapabilities|. |
|
*/ |
|
getBackgroundScanCapabilities() |
|
generates (WifiStatus status, StaBackgroundScanCapabilities capabilities); |
|
|
|
/** |
|
* Used to query the list of valid frequencies (depending on country code set) |
|
* for the provided band. These channels may be specifed in the |
|
* |BackgroundScanBucketParameters.frequenciesInMhz| for a background scan |
|
* request. |
|
* |
|
* @param band Band for which the frequency list is being generated. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
* @return frequencies vector of valid frequencies for the provided band. |
|
*/ |
|
getValidFrequenciesForBand(WifiBand band) |
|
generates (WifiStatus status, vec<WifiChannelInMhz> frequencies); |
|
|
|
/** |
|
* Start a background scan using the given cmdId as an identifier. Only one |
|
* active background scan need be supported. |
|
* Must fail if |StaIfaceCapabilityMask.BACKGROUND_SCAN| is not set. |
|
* |
|
* When this is called all requested buckets must be scanned, starting the |
|
* beginning of the cycle. |
|
* |
|
* For example: |
|
* If there are two buckets specified |
|
* - Bucket 1: period=10s |
|
* - Bucket 2: period=20s |
|
* - Bucket 3: period=30s |
|
* Then the following scans must occur |
|
* - t=0 buckets 1, 2, and 3 are scanned |
|
* - t=10 bucket 1 is scanned |
|
* - t=20 bucket 1 and 2 are scanned |
|
* - t=30 bucket 1 and 3 are scanned |
|
* - t=40 bucket 1 and 2 are scanned |
|
* - t=50 bucket 1 is scanned |
|
* - t=60 buckets 1, 2, and 3 are scanned |
|
* - and the patter repeats |
|
* |
|
* If any scan does not occur or is incomplete (error, interrupted, etc) then |
|
* a cached scan result must still be recorded with the |
|
* WIFI_SCAN_FLAG_INTERRUPTED flag set. |
|
* |
|
* @param cmdId command Id to use for this invocation. |
|
* @params Background scan parameters. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_INVALID_ARGS|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
startBackgroundScan(CommandId cmdId, StaBackgroundScanParameters params) |
|
generates (WifiStatus status); |
|
|
|
/** |
|
* Stop the background scan started. |
|
* Must fail if |StaIfaceCapabilityMask.BACKGROUND_SCAN| is not set. |
|
* |
|
* @param cmdId command Id corresponding to the request. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_STARTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
stopBackgroundScan(CommandId cmdId) generates (WifiStatus status); |
|
|
|
/** |
|
* Enable link layer stats collection. |
|
* Must fail if |StaIfaceCapabilityMask.LINK_LAYER_STATS| is not set. |
|
* |
|
* Radio statistics (once started) must not stop until disabled. |
|
* Iface statistics (once started) reset and start afresh after each |
|
* connection until disabled. |
|
* |
|
* @param debug Set for field debug mode. Driver must collect all |
|
* statistics regardless of performance impact. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
enableLinkLayerStatsCollection(bool debug) |
|
generates (WifiStatus status); |
|
|
|
/** |
|
* Disable link layer stats collection. |
|
* Must fail if |StaIfaceCapabilityMask.LINK_LAYER_STATS| 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_NOT_STARTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
disableLinkLayerStatsCollection() generates (WifiStatus status); |
|
|
|
/** |
|
* Retrieve the latest link layer stats. |
|
* Must fail if |StaIfaceCapabilityMask.LINK_LAYER_STATS| is not set or if |
|
* link layer stats collection hasn't been explicitly enabled. |
|
* |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_STARTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
* @return stats Instance of |LinkLayerStats|. |
|
*/ |
|
getLinkLayerStats() generates (WifiStatus status, StaLinkLayerStats stats); |
|
|
|
/** |
|
* Start RSSI monitoring on the currently connected access point. |
|
* Once the monitoring is enabled, |
|
* |IWifiStaIfaceEventCallback.onRssiThresholdBreached| callback must be |
|
* invoked to indicate if the RSSI goes above |maxRssi| or below |minRssi|. |
|
* Must fail if |StaIfaceCapabilityMask.RSSI_MONITOR| is not set. |
|
* |
|
* @param cmdId command Id to use for this invocation. |
|
* @param maxRssi Maximum RSSI threshold. |
|
* @param minRssi Minimum RSSI threshold. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_ARGS_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
startRssiMonitoring(CommandId cmdId, Rssi maxRssi, Rssi minRssi) |
|
generates (WifiStatus status); |
|
|
|
/** |
|
* Stop RSSI monitoring. |
|
* Must fail if |StaIfaceCapabilityMask.RSSI_MONITOR| is not set. |
|
* |
|
* @param cmdId command Id corresponding to the request. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_STARTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
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); |
|
|
|
/** |
|
* Enable/Disable Neighbour discovery offload functionality in the firmware. |
|
* |
|
* @param enable true to enable, false to disable. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
enableNdOffload(bool enable) generates (WifiStatus status); |
|
|
|
/** |
|
* Start sending the specified keep alive packets periodically. |
|
* |
|
* @param cmdId command Id to use for this invocation. |
|
* @param ipPacketData IP packet contents to be transmitted. |
|
* @param etherType 16 bit ether type to be set in the ethernet frame |
|
* transmitted. |
|
* @param srcAddress Source MAC address of the packet. |
|
* @param dstAddress Destination MAC address of the packet. |
|
* @param periodInMs Interval at which this packet must be transmitted. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
startSendingKeepAlivePackets( |
|
CommandId cmdId, vec<uint8_t> ipPacketData, uint16_t etherType, |
|
MacAddress srcAddress, MacAddress dstAddress, uint32_t periodInMs) |
|
generates (WifiStatus status); |
|
|
|
/** |
|
* Stop sending the specified keep alive packets. |
|
* |
|
* @param cmdId command Id corresponding to the request. |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
stopSendingKeepAlivePackets(CommandId cmdId) generates (WifiStatus status); |
|
|
|
/** |
|
* Set the MAC OUI during scanning. |
|
* An OUI {Organizationally Unique Identifier} is a 24-bit number that |
|
* uniquely identifies a vendor or manufacturer. |
|
* |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
setScanningMacOui(uint8_t[3] oui) generates (WifiStatus status); |
|
|
|
/** |
|
* API to start packet fate monitoring. |
|
* - Once started, monitoring must remain active until HAL is stopped or the |
|
* chip is reconfigured. |
|
* - When HAL is unloaded, all packet fate buffers must be cleared. |
|
* - The packet fates are used to monitor the state of packets transmitted/ |
|
* received during association. |
|
* |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
*/ |
|
startDebugPacketFateMonitoring() generates (WifiStatus status); |
|
|
|
/** |
|
* API to retrieve fates of outbound packets. |
|
* - HAL implementation must return the fates of |
|
* all the frames transmitted for the most recent association. |
|
* The fate reports must follow the same order as their respective |
|
* packets. |
|
* - HAL implementation may choose (but is not required) to include |
|
* reports for management frames. |
|
* - Packets reported by firmware, but not recognized by driver, |
|
* must be included. However, the ordering of the corresponding |
|
* reports is at the discretion of HAL implementation. |
|
* - Framework must be able to call this API multiple times for the same |
|
* association. |
|
* |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_STARTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
* @return fates Vector of |WifiDebugTxPacketFateReport| instances corresponding |
|
* to the packet fates. |
|
*/ |
|
getDebugTxPacketFates() |
|
generates (WifiStatus status, vec<WifiDebugTxPacketFateReport> fates); |
|
|
|
/** |
|
* API to retrieve fates of inbound packets. |
|
* - HAL implementation must return the fates of |
|
* all the frames received for the most recent association. |
|
* The fate reports must follow the same order as their respective |
|
* packets. |
|
* - HAL implementation may choose (but is not required) to include |
|
* reports for management frames. |
|
* - Packets reported by firmware, but not recognized by driver, |
|
* must be included. However, the ordering of the corresponding |
|
* reports is at the discretion of HAL implementation. |
|
* - Framework must be able to call this API multiple times for the same |
|
* association. |
|
* |
|
* @return status WifiStatus of the operation. |
|
* Possible status codes: |
|
* |WifiStatusCode.SUCCESS|, |
|
* |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, |
|
* |WifiStatusCode.ERROR_NOT_SUPPORTED|, |
|
* |WifiStatusCode.ERROR_NOT_STARTED|, |
|
* |WifiStatusCode.ERROR_NOT_AVAILABLE|, |
|
* |WifiStatusCode.ERROR_UNKNOWN| |
|
* @return fates Vector of |WifiDebugRxPacketFateReport| instances corresponding |
|
* to the packet fates. |
|
*/ |
|
getDebugRxPacketFates() |
|
generates (WifiStatus status, vec<WifiDebugRxPacketFateReport> fates); |
|
};
|
|
|