Package: android.hardware.wifi@1.0

IWifiChip

interface IWifiChip

Interface that represents a chip that must be configured as a single unit.The HAL/driver/firmware will be responsible for determining which phy is used to perform operations like NAN, RTT, etc.

Properties

ChipCapabilityMask

enum ChipCapabilityMask: uint32_t

Capabilities exposed by this chip.

Details
Members
DEBUG_MEMORY_FIRMWARE_DUMP = 1 << 0
Memory dump of Firmware.
DEBUG_MEMORY_DRIVER_DUMP = 1 << 1
Memory dump of Driver.
DEBUG_RING_BUFFER_CONNECT_EVENT = 1 << 2
Connectivity events reported via debug ring buffer.
DEBUG_RING_BUFFER_POWER_EVENT = 1 << 3
Power events reported via debug ring buffer.
DEBUG_RING_BUFFER_WAKELOCK_EVENT = 1 << 4
Wakelock events reported via debug ring buffer.
DEBUG_RING_BUFFER_VENDOR_DATA = 1 << 5
Vendor data reported via debug ring buffer.This mostly contains firmware event logs.
DEBUG_HOST_WAKE_REASON_STATS = 1 << 6
Host wake reasons stats collection.
DEBUG_ERROR_ALERTS = 1 << 7
Error alerts.

ChipIfaceCombinationLimit

struct ChipIfaceCombinationLimit {vec types; uint32_t maxIfaces}

Set of interface types with the maximum number of interfaces that can have one of the specified type for a given ChipIfaceCombination.See ChipIfaceCombination for examples.

Details
Members
types
maxIfaces

ChipIfaceCombination

struct ChipIfaceCombination {vec limits}

Set of interfaces that can operate concurrently when in a given mode.See ChipMode below.

For example:[{STA}<= 2]At most two STA interfaces are supported[] , [STA], [STA+STA]

[{STA}<= 1 , {NAN}<= 1 , {AP}<= 1]Any combination of STA, NAN, AP[] , [STA], [NAN], [AP], [STA+NAN], [STA+AP], [NAN+AP], [STA+NAN+AP]

[{STA}<= 1 , {NAN, P2P}<= 1]Optionally a STA and either NAN or P2P[] , [STA], [STA+NAN], [STA+P2P], [NAN], [P2P]Not included[NAN+P2P], [STA+NAN+P2P]

[{STA}<= 1 , {STA, NAN}<= 1]Optionally a STA and either a second STA or a NAN[] , [STA], [STA+NAN], [STA+STA], [NAN]Not included[STA+STA+NAN ]

Details
Members
limits

ChipMode

struct ChipMode {ChipModeId id; vec availableCombinations}

A mode that the chip can be put in.A mode defines a set of constraints on the interfaces that can exist while in that mode.Modes define a unit of configuration where all interfaces must be torn down to switch to a different mode.Some HALs may only have a single mode, but an example where multiple modes would be required is if a chip has different firmwares with different capabilities.

When in a mode, it must be possible to perform any combination of creating and removing interfaces as long as at least one of the ChipIfaceCombinations is satisfied.This means that if a chip has two available combinations, [{STA}<= 1]and [{AP}<= 1]then it is expected that exactly one STA interface or one AP interface can be created, but it is not expected that both a STA and AP interface could be created.If it was then there would be a single available combination [{STA}<=1 , {AP}<= 1].

When switching between two available combinations it is expected that interfaces only supported by the initial combination must be removed until the target combination is also satisfied.At that point new interfaces satisfying only the target combination can be added(meaning the initial combination limits will no longer satisfied). The addition of these new interfaces must not impact the existence of interfaces that satisfy both combinations.

For example, a chip with available combinations:[{STA}<= 2 , {NAN}<=1]and [{STA}<=1 , {NAN}<= 1 , {AP}<= 1}] If the chip currently has 3 interfaces STA, STA and NAN and wants to add an AP interface in place of one of the STAs then first one of the STA interfaces must be removed and then the AP interface can be created after the STA had been torn down.During this process the remaining STA and NAN interfaces must not be removed/recreated.

If a chip does not support this kind of reconfiguration in this mode then the combinations must be separated into two separate modes.Before switching modes all interfaces must be torn down, the mode switch must be enacted and when it completes the new interfaces must be brought up.

Details
Members
id
Id that can be used to put the chip in this mode.
availableCombinations
A list of the possible interface combinations that the chip can have while in this mode.

ChipDebugInfo

struct ChipDebugInfo {string driverDescription; string firmwareDescription}

Information about the version of the driver and firmware running this chip.

The information in these ASCII strings are vendor specific and does not need to follow any particular format.It may be dumped as part of the bug report.

Details
Members
driverDescription
firmwareDescription

Methods

getId

getId ()
generates (WifiStatus status, ChipId id)

Get the id assigned to this chip.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
id
Assigned chip Id.

registerEventCallback

registerEventCallback (IWifiChipEventCallback callback)
generates (WifiStatus status)

Requests notifications of significant events on this chip.Multiple calls to this must register multiple callbacks each of which must receive all events.

Details
Parameters
callback
An instance of the |IWifiChipEventCallback| HIDL interface object.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|

getCapabilities

getCapabilities ()
generates (WifiStatus status, bitfield<ChipCapabilityMask> capabilities)

Get the capabilities supported by this chip.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_AVAILABLE|, |WifiStatusCode.ERROR_UNKNOWN|
capabilities
Bitset of |ChipCapabilityMask| values.

getAvailableModes

getAvailableModes ()
generates (WifiStatus status, vec<ChipMode> modes)

Get the set of operation modes that the chip supports.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
modes
List of modes supported by the device.

configureChip

configureChip (ChipModeId modeId)
generates (WifiStatus status)

Configure the Chip.This may NOT be called to reconfigure a chip due to an internal limitation.Calling this when chip is already configured in a different mode must trigger an ERROR_NOT_SUPPORTED failure.If you want to do reconfiguration, please call IWifi.stop() and IWifi.start() to restart Wifi HAL before calling this.Any existing |IWifiIface| objects must be marked invalid after this call.If this fails then the chips is now in an undefined state and configureChip must be called again.Must trigger |IWifiChipEventCallback.onChipReconfigured| on success.Must trigger |IWifiEventCallback.onFailure| on failure.

Details
Parameters
modeId
The mode that the chip must switch to, corresponding to the id property of the target ChipMode.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_AVAILABLE|, |WifiStatusCode.ERROR_NOT_SUPPORTED|, |WifiStatusCode.ERROR_UNKNOWN|

getMode

getMode ()
generates (WifiStatus status, ChipModeId modeId)

Get the current mode that the chip is in.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
modeId
The mode that the chip is currently configured to, corresponding to the id property of the target ChipMode.

requestChipDebugInfo

requestChipDebugInfo ()
generates (WifiStatus status, ChipDebugInfo chipDebugInfo)

Request information about the chip.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_AVAILABLE|, |WifiStatusCode.ERROR_UNKNOWN|
chipDebugInfo
Instance of |ChipDebugInfo|.

requestDriverDebugDump

requestDriverDebugDump ()
generates (WifiStatus status, vec<uint8_t> blob)

Request vendor debug info from the driver.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_AVAILABLE|, |WifiStatusCode.ERROR_UNKNOWN|
blob
Vector of bytes retrieved from the driver.

requestFirmwareDebugDump

requestFirmwareDebugDump ()
generates (WifiStatus status, vec<uint8_t> blob)

Request vendor debug info from the firmware.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_AVAILABLE|, |WifiStatusCode.ERROR_UNKNOWN|
blob
Vector of bytes retrieved from the driver.

createApIface

createApIface ()
generates (WifiStatus status, IWifiApIface iface)

Create an AP iface on the chip.

Depending on the mode the chip is configured in, the interface creation may fail(code:|ERROR_NOT_AVAILABLE|)if we've already reached the maximum allowed(specified in |ChipIfaceCombination|)number of ifaces of the AP type.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|
iface
HIDL interface object representing the iface if successful, null otherwise.

getApIfaceNames

getApIfaceNames ()
generates (WifiStatus status, vec<string> ifnames)

List all the AP iface names configured on the chip.The corresponding |IWifiApIface| object for any iface are retrieved using |getApIface| method.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
ifnames
List of all AP iface names on the chip.

getApIface

getApIface (string ifname)
generates (WifiStatus status, IWifiApIface iface)

Gets a HIDL interface object for the AP Iface corresponding to the provided ifname.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|
iface
HIDL interface object representing the iface if it exists, null otherwise.

removeApIface

removeApIface (string ifname)
generates (WifiStatus status)

Removes the AP Iface with the provided ifname.Any further calls on the corresponding |IWifiApIface| HIDL interface object must fail.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|

createNanIface

createNanIface ()
generates (WifiStatus status, IWifiNanIface iface)

Create a NAN iface on the chip.

Depending on the mode the chip is configured in, the interface creation may fail(code:|ERROR_NOT_AVAILABLE|)if we've already reached the maximum allowed(specified in |ChipIfaceCombination|)number of ifaces of the NAN type.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|
iface
HIDL interface object representing the iface if successful, null otherwise.

getNanIfaceNames

getNanIfaceNames ()
generates (WifiStatus status, vec<string> ifnames)

List all the NAN iface names configured on the chip.The corresponding |IWifiNanIface| object for any iface are retrieved using |getNanIface| method.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
ifnames
List of all NAN iface names on the chip.

getNanIface

getNanIface (string ifname)
generates (WifiStatus status, IWifiNanIface iface)

Gets a HIDL interface object for the NAN Iface corresponding to the provided ifname.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|
iface
HIDL interface object representing the iface if it exists, null otherwise.

removeNanIface

removeNanIface (string ifname)
generates (WifiStatus status)

Removes the NAN Iface with the provided ifname.Any further calls on the corresponding |IWifiNanIface| HIDL interface object must fail.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|

createP2pIface

createP2pIface ()
generates (WifiStatus status, IWifiP2pIface iface)

Create a P2P iface on the chip.

Depending on the mode the chip is configured in, the interface creation may fail(code:|ERROR_NOT_AVAILABLE|)if we've already reached the maximum allowed(specified in |ChipIfaceCombination|)number of ifaces of the P2P type.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|
iface
HIDL interface object representing the iface if successful, null otherwise.

getP2pIfaceNames

getP2pIfaceNames ()
generates (WifiStatus status, vec<string> ifnames)

List all the P2P iface names configured on the chip.The corresponding |IWifiP2pIface| object for any iface are retrieved using |getP2pIface| method.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
ifnames
List of all P2P iface names on the chip.

getP2pIface

getP2pIface (string ifname)
generates (WifiStatus status, IWifiP2pIface iface)

Gets a HIDL interface object for the P2P Iface corresponding to the provided ifname.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|
iface
HIDL interface object representing the iface if it exists, null otherwise.

removeP2pIface

removeP2pIface (string ifname)
generates (WifiStatus status)

Removes the P2P Iface with the provided ifname.Any further calls on the corresponding |IWifiP2pIface| HIDL interface object must fail.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|

createStaIface

createStaIface ()
generates (WifiStatus status, IWifiStaIface iface)

Create an STA iface on the chip.

Depending on the mode the chip is configured in, the interface creation may fail(code:|ERROR_NOT_AVAILABLE|)if we've already reached the maximum allowed(specified in |ChipIfaceCombination|)number of ifaces of the STA type.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|
iface
HIDL interface object representing the iface if successful, null otherwise.

getStaIfaceNames

getStaIfaceNames ()
generates (WifiStatus status, vec<string> ifnames)

List all the STA iface names configured on the chip.The corresponding |IWifiStaIface| object for any iface are retrieved using |getStaIface| method.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
ifnames
List of all STA iface names on the chip.

getStaIface

getStaIface (string ifname)
generates (WifiStatus status, IWifiStaIface iface)

Gets a HIDL interface object for the STA Iface corresponding to the provided ifname.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|
iface
HIDL interface object representing the iface if it exists, null otherwise.

removeStaIface

removeStaIface (string ifname)
generates (WifiStatus status)

Removes the STA Iface with the provided ifname.Any further calls on the corresponding |IWifiStaIface| HIDL interface object must fail.

Details
Parameters
ifname
Name of the iface.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_INVALID_ARGS|

createRttController

createRttController (IWifiIface boundIface)
generates (WifiStatus status, IWifiRttController rtt)

Create a RTTController instance.

RTT controller can be either:a)Bound to a specific iface by passing in the corresponding |IWifiIface| object in |iface| param, OR b)Let the implementation decide the iface to use for RTT operations by passing null in |iface| param.

Details
Parameters
boundIface
HIDL interface object representing the iface if the responder must be bound to a specific iface, null otherwise.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|
rtt

getDebugRingBuffersStatus

getDebugRingBuffersStatus ()
generates (WifiStatus status, vec<WifiDebugRingBufferStatus> ringBuffers)

API to get the status of all ring buffers supported by driver.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|, |WifiStatusCode.NOT_AVAILABLE|, |WifiStatusCode.UNKNOWN|
ringBuffers
Vector of |WifiDebugRingBufferStatus| corresponding to the status of each ring bufffer on the device.

startLoggingToDebugRingBuffer

startLoggingToDebugRingBuffer (string ringName, WifiDebugRingBufferVerboseLevel verboseLevel, uint32_t maxIntervalInSec, uint32_t minDataSizeInBytes)
generates (WifiStatus status)

API to trigger the debug data collection.

Details
Parameters
ringName
represent the name of the ring for which data collection shall start.This can be retrieved via the corresponding |WifiDebugRingBufferStatus|.
verboseLevel
maxIntervalInSec
Maximum interval in seconds for driver to invoke |onDebugRingBufferData|, ignore if zero.
minDataSizeInBytes
: Minimum data size in buffer for driver to invoke |onDebugRingBufferData|, ignore if zero.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|, |WifiStatusCode.NOT_AVAILABLE|, |WifiStatusCode.UNKNOWN|

forceDumpToDebugRingBuffer

forceDumpToDebugRingBuffer (string ringName)
generates (WifiStatus status)

API to force dump data into the corresponding ring buffer.This is to be invoked during bugreport collection.

Details
Parameters
ringName
represent the name of the ring for which data collection shall be forced.This can be retrieved via the corresponding |WifiDebugRingBufferStatus|.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|, |WifiStatusCode.ERROR_NOT_STARTED|, |WifiStatusCode.NOT_AVAILABLE|, |WifiStatusCode.UNKNOWN|

stopLoggingToDebugRingBuffer

stopLoggingToDebugRingBuffer ()
generates (WifiStatus status)

API to stop the debug data collection for all ring buffers.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|, |WifiStatusCode.NOT_AVAILABLE|, |WifiStatusCode.UNKNOWN|

getDebugHostWakeReasonStats

getDebugHostWakeReasonStats ()
generates (WifiStatus status, WifiDebugHostWakeReasonStats stats)

API to retrieve the wifi wake up reason stats for debugging.The driver is expected to start maintaining these stats once the chip is configured using |configureChip|.These stats must be reset whenever the chip is reconfigured or the HAL is stopped.

Details
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|, |WifiStatusCode.NOT_AVAILABLE|, |WifiStatusCode.UNKNOWN|
stats
Instance of |WifiDebugHostWakeReasonStats|.

enableDebugErrorAlerts

enableDebugErrorAlerts (bool enable)
generates (WifiStatus status)

API to enable/disable alert notifications from the chip.These alerts must be used to notify framework of any fatal error events that the chip encounters via |IWifiChipEventCallback.onDebugErrorAlert| method.Must fail if |ChipCapabilityMask.DEBUG_ERROR_ALERTS| is not set.

Details
Parameters
enable
true to enable, false to disable.
Generates
status
WifiStatus of the operation.Possible status codes:|WifiStatusCode.SUCCESS|, |WifiStatusCode.ERROR_WIFI_CHIP_INVALID|, |WifiStatusCode.ERROR_NOT_SUPPORTED|, |WifiStatusCode.NOT_AVAILABLE|, |WifiStatusCode.UNKNOWN|