1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright 2016 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport IWifiIface; 20*4d7e907cSAndroid Build Coastguard Workerimport IWifiStaIfaceEventCallback; 21*4d7e907cSAndroid Build Coastguard Worker 22*4d7e907cSAndroid Build Coastguard Worker/** 23*4d7e907cSAndroid Build Coastguard Worker * Interface used to represent a single STA iface. 24*4d7e907cSAndroid Build Coastguard Worker */ 25*4d7e907cSAndroid Build Coastguard Workerinterface IWifiStaIface extends IWifiIface { 26*4d7e907cSAndroid Build Coastguard Worker /** 27*4d7e907cSAndroid Build Coastguard Worker * Mask of capabilities suported by this Iface. 28*4d7e907cSAndroid Build Coastguard Worker */ 29*4d7e907cSAndroid Build Coastguard Worker enum StaIfaceCapabilityMask : uint32_t { 30*4d7e907cSAndroid Build Coastguard Worker /** 31*4d7e907cSAndroid Build Coastguard Worker * If set indicates that the APF APIs are supported. 32*4d7e907cSAndroid Build Coastguard Worker * APF (Android Packet Filter) is a BPF like packet filtering 33*4d7e907cSAndroid Build Coastguard Worker * bytecode executed by the firmware. 34*4d7e907cSAndroid Build Coastguard Worker */ 35*4d7e907cSAndroid Build Coastguard Worker APF = 1 << 0, 36*4d7e907cSAndroid Build Coastguard Worker /** 37*4d7e907cSAndroid Build Coastguard Worker * If set indicates that the Background Scan APIs are supported. 38*4d7e907cSAndroid Build Coastguard Worker * Background scan allow the host to send a number of buckets down to the 39*4d7e907cSAndroid Build Coastguard Worker * firmware. Each bucket contains a set of channels, a period, and some 40*4d7e907cSAndroid Build Coastguard Worker * parameters about how and when to report results. 41*4d7e907cSAndroid Build Coastguard Worker */ 42*4d7e907cSAndroid Build Coastguard Worker BACKGROUND_SCAN = 1 << 1, 43*4d7e907cSAndroid Build Coastguard Worker /** 44*4d7e907cSAndroid Build Coastguard Worker * If set indicates that the link layer stats APIs are supported. 45*4d7e907cSAndroid Build Coastguard Worker */ 46*4d7e907cSAndroid Build Coastguard Worker LINK_LAYER_STATS = 1 << 2, 47*4d7e907cSAndroid Build Coastguard Worker /** 48*4d7e907cSAndroid Build Coastguard Worker * If set indicates that the RSSI monitor APIs are supported. 49*4d7e907cSAndroid Build Coastguard Worker */ 50*4d7e907cSAndroid Build Coastguard Worker RSSI_MONITOR = 1 << 3, 51*4d7e907cSAndroid Build Coastguard Worker /** 52*4d7e907cSAndroid Build Coastguard Worker * If set indicates that the roaming API's are supported. 53*4d7e907cSAndroid Build Coastguard Worker */ 54*4d7e907cSAndroid Build Coastguard Worker CONTROL_ROAMING = 1 << 4, 55*4d7e907cSAndroid Build Coastguard Worker /** 56*4d7e907cSAndroid Build Coastguard Worker * If set indicates support for Probe IE white listing. 57*4d7e907cSAndroid Build Coastguard Worker */ 58*4d7e907cSAndroid Build Coastguard Worker PROBE_IE_WHITELIST = 1 << 5, 59*4d7e907cSAndroid Build Coastguard Worker /** 60*4d7e907cSAndroid Build Coastguard Worker * If set indicates support for MAC & Probe Sequence Number randomization. 61*4d7e907cSAndroid Build Coastguard Worker */ 62*4d7e907cSAndroid Build Coastguard Worker SCAN_RAND = 1 << 6, 63*4d7e907cSAndroid Build Coastguard Worker /** 64*4d7e907cSAndroid Build Coastguard Worker * Support for 5 GHz Band. 65*4d7e907cSAndroid Build Coastguard Worker */ 66*4d7e907cSAndroid Build Coastguard Worker STA_5G = 1 << 7, 67*4d7e907cSAndroid Build Coastguard Worker /** 68*4d7e907cSAndroid Build Coastguard Worker * Support for GAS/ANQP queries. 69*4d7e907cSAndroid Build Coastguard Worker */ 70*4d7e907cSAndroid Build Coastguard Worker HOTSPOT = 1 << 8, 71*4d7e907cSAndroid Build Coastguard Worker /** 72*4d7e907cSAndroid Build Coastguard Worker * Support for Preferred Network Offload. 73*4d7e907cSAndroid Build Coastguard Worker */ 74*4d7e907cSAndroid Build Coastguard Worker PNO = 1 << 9, 75*4d7e907cSAndroid Build Coastguard Worker /** 76*4d7e907cSAndroid Build Coastguard Worker * Support for Tunneled Direct Link Setup. 77*4d7e907cSAndroid Build Coastguard Worker */ 78*4d7e907cSAndroid Build Coastguard Worker TDLS = 1 << 10, 79*4d7e907cSAndroid Build Coastguard Worker /** 80*4d7e907cSAndroid Build Coastguard Worker * Support for Tunneled Direct Link Setup off channel. 81*4d7e907cSAndroid Build Coastguard Worker */ 82*4d7e907cSAndroid Build Coastguard Worker TDLS_OFFCHANNEL = 1 << 11, 83*4d7e907cSAndroid Build Coastguard Worker /** 84*4d7e907cSAndroid Build Coastguard Worker * Support for neighbour discovery offload. 85*4d7e907cSAndroid Build Coastguard Worker */ 86*4d7e907cSAndroid Build Coastguard Worker ND_OFFLOAD = 1 << 12, 87*4d7e907cSAndroid Build Coastguard Worker /** 88*4d7e907cSAndroid Build Coastguard Worker * Support for keep alive packet offload. 89*4d7e907cSAndroid Build Coastguard Worker */ 90*4d7e907cSAndroid Build Coastguard Worker KEEP_ALIVE = 1 << 13, 91*4d7e907cSAndroid Build Coastguard Worker /** 92*4d7e907cSAndroid Build Coastguard Worker * Support for tracking connection packets' fate. 93*4d7e907cSAndroid Build Coastguard Worker */ 94*4d7e907cSAndroid Build Coastguard Worker DEBUG_PACKET_FATE = 1 << 14 95*4d7e907cSAndroid Build Coastguard Worker }; 96*4d7e907cSAndroid Build Coastguard Worker 97*4d7e907cSAndroid Build Coastguard Worker /** 98*4d7e907cSAndroid Build Coastguard Worker * Requests notifications of significant events on this iface. Multiple calls 99*4d7e907cSAndroid Build Coastguard Worker * to this must register multiple callbacks each of which must receive all 100*4d7e907cSAndroid Build Coastguard Worker * events. 101*4d7e907cSAndroid Build Coastguard Worker * 102*4d7e907cSAndroid Build Coastguard Worker * @param callback An instance of the |IWifiStaIfaceEventCallback| HIDL interface 103*4d7e907cSAndroid Build Coastguard Worker * object. 104*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 105*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 106*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 107*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID| 108*4d7e907cSAndroid Build Coastguard Worker */ 109*4d7e907cSAndroid Build Coastguard Worker registerEventCallback(IWifiStaIfaceEventCallback callback) 110*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status); 111*4d7e907cSAndroid Build Coastguard Worker 112*4d7e907cSAndroid Build Coastguard Worker /** 113*4d7e907cSAndroid Build Coastguard Worker * Get the capabilities supported by this STA iface. 114*4d7e907cSAndroid Build Coastguard Worker * 115*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 116*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 117*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 118*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 119*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 120*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 121*4d7e907cSAndroid Build Coastguard Worker * @return capabilities Bitset of |StaIfaceCapabilityMask| values. 122*4d7e907cSAndroid Build Coastguard Worker */ 123*4d7e907cSAndroid Build Coastguard Worker getCapabilities() 124*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status, 125*4d7e907cSAndroid Build Coastguard Worker bitfield<StaIfaceCapabilityMask> capabilities); 126*4d7e907cSAndroid Build Coastguard Worker 127*4d7e907cSAndroid Build Coastguard Worker /** 128*4d7e907cSAndroid Build Coastguard Worker * Used to query additional information about the chip's APF capabilities. 129*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.APF| is not set. 130*4d7e907cSAndroid Build Coastguard Worker * 131*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 132*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 133*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 134*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 135*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 136*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 137*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 138*4d7e907cSAndroid Build Coastguard Worker * @return capabilities Instance of |StaApfPacketFilterCapabilities|. 139*4d7e907cSAndroid Build Coastguard Worker */ 140*4d7e907cSAndroid Build Coastguard Worker getApfPacketFilterCapabilities() 141*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status, StaApfPacketFilterCapabilities capabilities); 142*4d7e907cSAndroid Build Coastguard Worker 143*4d7e907cSAndroid Build Coastguard Worker /** 144*4d7e907cSAndroid Build Coastguard Worker * Installs an APF program on this iface, replacing an existing 145*4d7e907cSAndroid Build Coastguard Worker * program if present. 146*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.APF| is not set. 147*4d7e907cSAndroid Build Coastguard Worker * 148*4d7e907cSAndroid Build Coastguard Worker * APF docs 149*4d7e907cSAndroid Build Coastguard Worker * ========================================================================== 150*4d7e907cSAndroid Build Coastguard Worker * APF functionality, instructions and bytecode/binary format is described in: 151*4d7e907cSAndroid Build Coastguard Worker * http://android.googlesource.com/platform/hardware/google/apf/ 152*4d7e907cSAndroid Build Coastguard Worker * +/b75c9f3714cfae3dad3d976958e063150781437e/apf.h 153*4d7e907cSAndroid Build Coastguard Worker * 154*4d7e907cSAndroid Build Coastguard Worker * The interpreter API is described here: 155*4d7e907cSAndroid Build Coastguard Worker * http://android.googlesource.com/platform/hardware/google/apf/+/ 156*4d7e907cSAndroid Build Coastguard Worker * b75c9f3714cfae3dad3d976958e063150781437e/apf_interpreter.h#32 157*4d7e907cSAndroid Build Coastguard Worker * 158*4d7e907cSAndroid Build Coastguard Worker * The assembler/generator API is described in javadocs here: 159*4d7e907cSAndroid Build Coastguard Worker * http://android.googlesource.com/platform/frameworks/base/+/ 160*4d7e907cSAndroid Build Coastguard Worker * 4456f33a958a7f09e608399da83c4d12b2e7d191/services/net/java/android/net/ 161*4d7e907cSAndroid Build Coastguard Worker * apf/ApfGenerator.java 162*4d7e907cSAndroid Build Coastguard Worker * 163*4d7e907cSAndroid Build Coastguard Worker * Disassembler usage is described here: 164*4d7e907cSAndroid Build Coastguard Worker * http://android.googlesource.com/platform/hardware/google/apf/+/ 165*4d7e907cSAndroid Build Coastguard Worker * b75c9f3714cfae3dad3d976958e063150781437e/apf_disassembler.c#65 166*4d7e907cSAndroid Build Coastguard Worker * 167*4d7e907cSAndroid Build Coastguard Worker * The BPF to APF translator usage is described here: 168*4d7e907cSAndroid Build Coastguard Worker * http://android.googlesource.com/platform/frameworks/base/+/ 169*4d7e907cSAndroid Build Coastguard Worker * 4456f33a958a7f09e608399da83c4d12b2e7d191/tests/net/java/android/net/ 170*4d7e907cSAndroid Build Coastguard Worker * apf/Bpf2Apf.java 171*4d7e907cSAndroid Build Coastguard Worker * ========================================================================== 172*4d7e907cSAndroid Build Coastguard Worker * 173*4d7e907cSAndroid Build Coastguard Worker * @param cmdId command Id to use for this invocation. 174*4d7e907cSAndroid Build Coastguard Worker * @param APF Program to be set. 175*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 176*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 177*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 178*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 179*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_INVALID_ARGS|, 180*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 181*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 182*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 183*4d7e907cSAndroid Build Coastguard Worker */ 184*4d7e907cSAndroid Build Coastguard Worker installApfPacketFilter(CommandId cmdId, vec<uint8_t> program) 185*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status); 186*4d7e907cSAndroid Build Coastguard Worker 187*4d7e907cSAndroid Build Coastguard Worker /** 188*4d7e907cSAndroid Build Coastguard Worker * Used to query additional information about the chip's Background Scan capabilities. 189*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.BACKGROUND_SCAN| is not set. 190*4d7e907cSAndroid Build Coastguard Worker * 191*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 192*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 193*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 194*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 195*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 196*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 197*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 198*4d7e907cSAndroid Build Coastguard Worker * @return capabilities Instance of |StaBackgroundScanCapabilities|. 199*4d7e907cSAndroid Build Coastguard Worker */ 200*4d7e907cSAndroid Build Coastguard Worker getBackgroundScanCapabilities() 201*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status, StaBackgroundScanCapabilities capabilities); 202*4d7e907cSAndroid Build Coastguard Worker 203*4d7e907cSAndroid Build Coastguard Worker /** 204*4d7e907cSAndroid Build Coastguard Worker * Used to query the list of valid frequencies (depending on country code set) 205*4d7e907cSAndroid Build Coastguard Worker * for the provided band. These channels may be specifed in the 206*4d7e907cSAndroid Build Coastguard Worker * |BackgroundScanBucketParameters.frequenciesInMhz| for a background scan 207*4d7e907cSAndroid Build Coastguard Worker * request. 208*4d7e907cSAndroid Build Coastguard Worker * 209*4d7e907cSAndroid Build Coastguard Worker * @param band Band for which the frequency list is being generated. 210*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 211*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 212*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 213*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 214*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 215*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 216*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 217*4d7e907cSAndroid Build Coastguard Worker * @return frequencies vector of valid frequencies for the provided band. 218*4d7e907cSAndroid Build Coastguard Worker */ 219*4d7e907cSAndroid Build Coastguard Worker getValidFrequenciesForBand(WifiBand band) 220*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status, vec<WifiChannelInMhz> frequencies); 221*4d7e907cSAndroid Build Coastguard Worker 222*4d7e907cSAndroid Build Coastguard Worker /** 223*4d7e907cSAndroid Build Coastguard Worker * Start a background scan using the given cmdId as an identifier. Only one 224*4d7e907cSAndroid Build Coastguard Worker * active background scan need be supported. 225*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.BACKGROUND_SCAN| is not set. 226*4d7e907cSAndroid Build Coastguard Worker * 227*4d7e907cSAndroid Build Coastguard Worker * When this is called all requested buckets must be scanned, starting the 228*4d7e907cSAndroid Build Coastguard Worker * beginning of the cycle. 229*4d7e907cSAndroid Build Coastguard Worker * 230*4d7e907cSAndroid Build Coastguard Worker * For example: 231*4d7e907cSAndroid Build Coastguard Worker * If there are two buckets specified 232*4d7e907cSAndroid Build Coastguard Worker * - Bucket 1: period=10s 233*4d7e907cSAndroid Build Coastguard Worker * - Bucket 2: period=20s 234*4d7e907cSAndroid Build Coastguard Worker * - Bucket 3: period=30s 235*4d7e907cSAndroid Build Coastguard Worker * Then the following scans must occur 236*4d7e907cSAndroid Build Coastguard Worker * - t=0 buckets 1, 2, and 3 are scanned 237*4d7e907cSAndroid Build Coastguard Worker * - t=10 bucket 1 is scanned 238*4d7e907cSAndroid Build Coastguard Worker * - t=20 bucket 1 and 2 are scanned 239*4d7e907cSAndroid Build Coastguard Worker * - t=30 bucket 1 and 3 are scanned 240*4d7e907cSAndroid Build Coastguard Worker * - t=40 bucket 1 and 2 are scanned 241*4d7e907cSAndroid Build Coastguard Worker * - t=50 bucket 1 is scanned 242*4d7e907cSAndroid Build Coastguard Worker * - t=60 buckets 1, 2, and 3 are scanned 243*4d7e907cSAndroid Build Coastguard Worker * - and the patter repeats 244*4d7e907cSAndroid Build Coastguard Worker * 245*4d7e907cSAndroid Build Coastguard Worker * If any scan does not occur or is incomplete (error, interrupted, etc) then 246*4d7e907cSAndroid Build Coastguard Worker * a cached scan result must still be recorded with the 247*4d7e907cSAndroid Build Coastguard Worker * WIFI_SCAN_FLAG_INTERRUPTED flag set. 248*4d7e907cSAndroid Build Coastguard Worker * 249*4d7e907cSAndroid Build Coastguard Worker * @param cmdId command Id to use for this invocation. 250*4d7e907cSAndroid Build Coastguard Worker * @params Background scan parameters. 251*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 252*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 253*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 254*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_INVALID_ARGS|, 255*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 256*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 257*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 258*4d7e907cSAndroid Build Coastguard Worker */ 259*4d7e907cSAndroid Build Coastguard Worker startBackgroundScan(CommandId cmdId, StaBackgroundScanParameters params) 260*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status); 261*4d7e907cSAndroid Build Coastguard Worker 262*4d7e907cSAndroid Build Coastguard Worker /** 263*4d7e907cSAndroid Build Coastguard Worker * Stop the background scan started. 264*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.BACKGROUND_SCAN| is not set. 265*4d7e907cSAndroid Build Coastguard Worker * 266*4d7e907cSAndroid Build Coastguard Worker * @param cmdId command Id corresponding to the request. 267*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 268*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 269*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 270*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 271*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 272*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_STARTED|, 273*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 274*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 275*4d7e907cSAndroid Build Coastguard Worker */ 276*4d7e907cSAndroid Build Coastguard Worker stopBackgroundScan(CommandId cmdId) generates (WifiStatus status); 277*4d7e907cSAndroid Build Coastguard Worker 278*4d7e907cSAndroid Build Coastguard Worker /** 279*4d7e907cSAndroid Build Coastguard Worker * Enable link layer stats collection. 280*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.LINK_LAYER_STATS| is not set. 281*4d7e907cSAndroid Build Coastguard Worker * 282*4d7e907cSAndroid Build Coastguard Worker * Radio statistics (once started) must not stop until disabled. 283*4d7e907cSAndroid Build Coastguard Worker * Iface statistics (once started) reset and start afresh after each 284*4d7e907cSAndroid Build Coastguard Worker * connection until disabled. 285*4d7e907cSAndroid Build Coastguard Worker * 286*4d7e907cSAndroid Build Coastguard Worker * @param debug Set for field debug mode. Driver must collect all 287*4d7e907cSAndroid Build Coastguard Worker * statistics regardless of performance impact. 288*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 289*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 290*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 291*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 292*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 293*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 294*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 295*4d7e907cSAndroid Build Coastguard Worker */ 296*4d7e907cSAndroid Build Coastguard Worker enableLinkLayerStatsCollection(bool debug) 297*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status); 298*4d7e907cSAndroid Build Coastguard Worker 299*4d7e907cSAndroid Build Coastguard Worker /** 300*4d7e907cSAndroid Build Coastguard Worker * Disable link layer stats collection. 301*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.LINK_LAYER_STATS| is not set. 302*4d7e907cSAndroid Build Coastguard Worker * 303*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 304*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 305*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 306*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 307*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 308*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_STARTED|, 309*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 310*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 311*4d7e907cSAndroid Build Coastguard Worker */ 312*4d7e907cSAndroid Build Coastguard Worker disableLinkLayerStatsCollection() generates (WifiStatus status); 313*4d7e907cSAndroid Build Coastguard Worker 314*4d7e907cSAndroid Build Coastguard Worker /** 315*4d7e907cSAndroid Build Coastguard Worker * Retrieve the latest link layer stats. 316*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.LINK_LAYER_STATS| is not set or if 317*4d7e907cSAndroid Build Coastguard Worker * link layer stats collection hasn't been explicitly enabled. 318*4d7e907cSAndroid Build Coastguard Worker * 319*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 320*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 321*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 322*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 323*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 324*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_STARTED|, 325*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 326*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 327*4d7e907cSAndroid Build Coastguard Worker * @return stats Instance of |LinkLayerStats|. 328*4d7e907cSAndroid Build Coastguard Worker */ 329*4d7e907cSAndroid Build Coastguard Worker getLinkLayerStats() generates (WifiStatus status, StaLinkLayerStats stats); 330*4d7e907cSAndroid Build Coastguard Worker 331*4d7e907cSAndroid Build Coastguard Worker /** 332*4d7e907cSAndroid Build Coastguard Worker * Start RSSI monitoring on the currently connected access point. 333*4d7e907cSAndroid Build Coastguard Worker * Once the monitoring is enabled, 334*4d7e907cSAndroid Build Coastguard Worker * |IWifiStaIfaceEventCallback.onRssiThresholdBreached| callback must be 335*4d7e907cSAndroid Build Coastguard Worker * invoked to indicate if the RSSI goes above |maxRssi| or below |minRssi|. 336*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.RSSI_MONITOR| is not set. 337*4d7e907cSAndroid Build Coastguard Worker * 338*4d7e907cSAndroid Build Coastguard Worker * @param cmdId command Id to use for this invocation. 339*4d7e907cSAndroid Build Coastguard Worker * @param maxRssi Maximum RSSI threshold. 340*4d7e907cSAndroid Build Coastguard Worker * @param minRssi Minimum RSSI threshold. 341*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 342*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 343*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 344*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 345*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_ARGS_INVALID|, 346*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 347*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 348*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 349*4d7e907cSAndroid Build Coastguard Worker */ 350*4d7e907cSAndroid Build Coastguard Worker startRssiMonitoring(CommandId cmdId, Rssi maxRssi, Rssi minRssi) 351*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status); 352*4d7e907cSAndroid Build Coastguard Worker 353*4d7e907cSAndroid Build Coastguard Worker /** 354*4d7e907cSAndroid Build Coastguard Worker * Stop RSSI monitoring. 355*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.RSSI_MONITOR| is not set. 356*4d7e907cSAndroid Build Coastguard Worker * 357*4d7e907cSAndroid Build Coastguard Worker * @param cmdId command Id corresponding to the request. 358*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 359*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 360*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 361*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 362*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 363*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_STARTED|, 364*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 365*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 366*4d7e907cSAndroid Build Coastguard Worker */ 367*4d7e907cSAndroid Build Coastguard Worker stopRssiMonitoring(CommandId cmdId) generates (WifiStatus status); 368*4d7e907cSAndroid Build Coastguard Worker 369*4d7e907cSAndroid Build Coastguard Worker /** 370*4d7e907cSAndroid Build Coastguard Worker * Get roaming control capabilities. 371*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.CONTROL_ROAMING| is not set. 372*4d7e907cSAndroid Build Coastguard Worker * 373*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 374*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 375*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 376*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 377*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 378*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 379*4d7e907cSAndroid Build Coastguard Worker * @return caps Instance of |StaRoamingCapabilities|. 380*4d7e907cSAndroid Build Coastguard Worker */ 381*4d7e907cSAndroid Build Coastguard Worker getRoamingCapabilities() 382*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status, StaRoamingCapabilities caps); 383*4d7e907cSAndroid Build Coastguard Worker 384*4d7e907cSAndroid Build Coastguard Worker /** 385*4d7e907cSAndroid Build Coastguard Worker * Configure roaming control parameters. 386*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.CONTROL_ROAMING| is not set. 387*4d7e907cSAndroid Build Coastguard Worker * 388*4d7e907cSAndroid Build Coastguard Worker * @param config Instance of |StaRoamingConfig|. 389*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 390*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 391*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 392*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 393*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 394*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 395*4d7e907cSAndroid Build Coastguard Worker */ 396*4d7e907cSAndroid Build Coastguard Worker configureRoaming(StaRoamingConfig config) generates (WifiStatus status); 397*4d7e907cSAndroid Build Coastguard Worker 398*4d7e907cSAndroid Build Coastguard Worker /** 399*4d7e907cSAndroid Build Coastguard Worker * Set the roaming control state with the parameters configured 400*4d7e907cSAndroid Build Coastguard Worker * using |configureRoaming|. Depending on the roaming state set, the 401*4d7e907cSAndroid Build Coastguard Worker * driver/firmware would enable/disable control over roaming decisions. 402*4d7e907cSAndroid Build Coastguard Worker * Must fail if |StaIfaceCapabilityMask.CONTROL_ROAMING| is not set. 403*4d7e907cSAndroid Build Coastguard Worker * 404*4d7e907cSAndroid Build Coastguard Worker * @param state State of the roaming control. 405*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 406*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 407*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 408*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 409*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 410*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_BUSY|, 411*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 412*4d7e907cSAndroid Build Coastguard Worker */ 413*4d7e907cSAndroid Build Coastguard Worker setRoamingState(StaRoamingState state) generates (WifiStatus status); 414*4d7e907cSAndroid Build Coastguard Worker 415*4d7e907cSAndroid Build Coastguard Worker /** 416*4d7e907cSAndroid Build Coastguard Worker * Enable/Disable Neighbour discovery offload functionality in the firmware. 417*4d7e907cSAndroid Build Coastguard Worker * 418*4d7e907cSAndroid Build Coastguard Worker * @param enable true to enable, false to disable. 419*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 420*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 421*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 422*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 423*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 424*4d7e907cSAndroid Build Coastguard Worker */ 425*4d7e907cSAndroid Build Coastguard Worker enableNdOffload(bool enable) generates (WifiStatus status); 426*4d7e907cSAndroid Build Coastguard Worker 427*4d7e907cSAndroid Build Coastguard Worker /** 428*4d7e907cSAndroid Build Coastguard Worker * Start sending the specified keep alive packets periodically. 429*4d7e907cSAndroid Build Coastguard Worker * 430*4d7e907cSAndroid Build Coastguard Worker * @param cmdId command Id to use for this invocation. 431*4d7e907cSAndroid Build Coastguard Worker * @param ipPacketData IP packet contents to be transmitted. 432*4d7e907cSAndroid Build Coastguard Worker * @param etherType 16 bit ether type to be set in the ethernet frame 433*4d7e907cSAndroid Build Coastguard Worker * transmitted. 434*4d7e907cSAndroid Build Coastguard Worker * @param srcAddress Source MAC address of the packet. 435*4d7e907cSAndroid Build Coastguard Worker * @param dstAddress Destination MAC address of the packet. 436*4d7e907cSAndroid Build Coastguard Worker * @param periodInMs Interval at which this packet must be transmitted. 437*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 438*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 439*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 440*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 441*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 442*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 443*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 444*4d7e907cSAndroid Build Coastguard Worker */ 445*4d7e907cSAndroid Build Coastguard Worker startSendingKeepAlivePackets( 446*4d7e907cSAndroid Build Coastguard Worker CommandId cmdId, vec<uint8_t> ipPacketData, uint16_t etherType, 447*4d7e907cSAndroid Build Coastguard Worker MacAddress srcAddress, MacAddress dstAddress, uint32_t periodInMs) 448*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status); 449*4d7e907cSAndroid Build Coastguard Worker 450*4d7e907cSAndroid Build Coastguard Worker /** 451*4d7e907cSAndroid Build Coastguard Worker * Stop sending the specified keep alive packets. 452*4d7e907cSAndroid Build Coastguard Worker * 453*4d7e907cSAndroid Build Coastguard Worker * @param cmdId command Id corresponding to the request. 454*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 455*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 456*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 457*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 458*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 459*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 460*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 461*4d7e907cSAndroid Build Coastguard Worker */ 462*4d7e907cSAndroid Build Coastguard Worker stopSendingKeepAlivePackets(CommandId cmdId) generates (WifiStatus status); 463*4d7e907cSAndroid Build Coastguard Worker 464*4d7e907cSAndroid Build Coastguard Worker /** 465*4d7e907cSAndroid Build Coastguard Worker * Set the MAC OUI during scanning. 466*4d7e907cSAndroid Build Coastguard Worker * An OUI {Organizationally Unique Identifier} is a 24-bit number that 467*4d7e907cSAndroid Build Coastguard Worker * uniquely identifies a vendor or manufacturer. 468*4d7e907cSAndroid Build Coastguard Worker * 469*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 470*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 471*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 472*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 473*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 474*4d7e907cSAndroid Build Coastguard Worker */ 475*4d7e907cSAndroid Build Coastguard Worker setScanningMacOui(uint8_t[3] oui) generates (WifiStatus status); 476*4d7e907cSAndroid Build Coastguard Worker 477*4d7e907cSAndroid Build Coastguard Worker /** 478*4d7e907cSAndroid Build Coastguard Worker * API to start packet fate monitoring. 479*4d7e907cSAndroid Build Coastguard Worker * - Once started, monitoring must remain active until HAL is stopped or the 480*4d7e907cSAndroid Build Coastguard Worker * chip is reconfigured. 481*4d7e907cSAndroid Build Coastguard Worker * - When HAL is unloaded, all packet fate buffers must be cleared. 482*4d7e907cSAndroid Build Coastguard Worker * - The packet fates are used to monitor the state of packets transmitted/ 483*4d7e907cSAndroid Build Coastguard Worker * received during association. 484*4d7e907cSAndroid Build Coastguard Worker * 485*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 486*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 487*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 488*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 489*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 490*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 491*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 492*4d7e907cSAndroid Build Coastguard Worker */ 493*4d7e907cSAndroid Build Coastguard Worker startDebugPacketFateMonitoring() generates (WifiStatus status); 494*4d7e907cSAndroid Build Coastguard Worker 495*4d7e907cSAndroid Build Coastguard Worker /** 496*4d7e907cSAndroid Build Coastguard Worker * API to retrieve fates of outbound packets. 497*4d7e907cSAndroid Build Coastguard Worker * - HAL implementation must return the fates of 498*4d7e907cSAndroid Build Coastguard Worker * all the frames transmitted for the most recent association. 499*4d7e907cSAndroid Build Coastguard Worker * The fate reports must follow the same order as their respective 500*4d7e907cSAndroid Build Coastguard Worker * packets. 501*4d7e907cSAndroid Build Coastguard Worker * - HAL implementation may choose (but is not required) to include 502*4d7e907cSAndroid Build Coastguard Worker * reports for management frames. 503*4d7e907cSAndroid Build Coastguard Worker * - Packets reported by firmware, but not recognized by driver, 504*4d7e907cSAndroid Build Coastguard Worker * must be included. However, the ordering of the corresponding 505*4d7e907cSAndroid Build Coastguard Worker * reports is at the discretion of HAL implementation. 506*4d7e907cSAndroid Build Coastguard Worker * - Framework must be able to call this API multiple times for the same 507*4d7e907cSAndroid Build Coastguard Worker * association. 508*4d7e907cSAndroid Build Coastguard Worker * 509*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 510*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 511*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 512*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 513*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 514*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_STARTED|, 515*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 516*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 517*4d7e907cSAndroid Build Coastguard Worker * @return fates Vector of |WifiDebugTxPacketFateReport| instances corresponding 518*4d7e907cSAndroid Build Coastguard Worker * to the packet fates. 519*4d7e907cSAndroid Build Coastguard Worker */ 520*4d7e907cSAndroid Build Coastguard Worker getDebugTxPacketFates() 521*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status, vec<WifiDebugTxPacketFateReport> fates); 522*4d7e907cSAndroid Build Coastguard Worker 523*4d7e907cSAndroid Build Coastguard Worker /** 524*4d7e907cSAndroid Build Coastguard Worker * API to retrieve fates of inbound packets. 525*4d7e907cSAndroid Build Coastguard Worker * - HAL implementation must return the fates of 526*4d7e907cSAndroid Build Coastguard Worker * all the frames received for the most recent association. 527*4d7e907cSAndroid Build Coastguard Worker * The fate reports must follow the same order as their respective 528*4d7e907cSAndroid Build Coastguard Worker * packets. 529*4d7e907cSAndroid Build Coastguard Worker * - HAL implementation may choose (but is not required) to include 530*4d7e907cSAndroid Build Coastguard Worker * reports for management frames. 531*4d7e907cSAndroid Build Coastguard Worker * - Packets reported by firmware, but not recognized by driver, 532*4d7e907cSAndroid Build Coastguard Worker * must be included. However, the ordering of the corresponding 533*4d7e907cSAndroid Build Coastguard Worker * reports is at the discretion of HAL implementation. 534*4d7e907cSAndroid Build Coastguard Worker * - Framework must be able to call this API multiple times for the same 535*4d7e907cSAndroid Build Coastguard Worker * association. 536*4d7e907cSAndroid Build Coastguard Worker * 537*4d7e907cSAndroid Build Coastguard Worker * @return status WifiStatus of the operation. 538*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 539*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.SUCCESS|, 540*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 541*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_SUPPORTED|, 542*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_STARTED|, 543*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_NOT_AVAILABLE|, 544*4d7e907cSAndroid Build Coastguard Worker * |WifiStatusCode.ERROR_UNKNOWN| 545*4d7e907cSAndroid Build Coastguard Worker * @return fates Vector of |WifiDebugRxPacketFateReport| instances corresponding 546*4d7e907cSAndroid Build Coastguard Worker * to the packet fates. 547*4d7e907cSAndroid Build Coastguard Worker */ 548*4d7e907cSAndroid Build Coastguard Worker getDebugRxPacketFates() 549*4d7e907cSAndroid Build Coastguard Worker generates (WifiStatus status, vec<WifiDebugRxPacketFateReport> fates); 550*4d7e907cSAndroid Build Coastguard Worker}; 551