blob: 68eb179eecbffa030c97de23aa3aa6f7c47215ff [file] [log] [blame]
Roshan Pius39f588f2016-10-31 14:51:27 -07001/*
2 * Copyright 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.wifi.supplicant@1.0;
18
19import ISupplicantIface;
20import ISupplicantStaIfaceCallback;
21
22/**
Roshan Pius8c6a8772016-11-03 09:37:57 -070023 * Interface exposed by the supplicant for each station mode network
Roshan Pius39f588f2016-10-31 14:51:27 -070024 * interface (e.g wlan0) it controls.
25 */
26interface ISupplicantStaIface extends ISupplicantIface {
27 /**
Roshan Piusb76dbbe2016-11-09 09:55:42 -080028 * Access Network Query Protocol info ID elements
29 * for IEEE Std 802.11u-2011.
30 */
Roshan Piuse3f25f12016-12-08 13:20:05 -080031 enum AnqpInfoId : uint16_t {
Roshan Piusb76dbbe2016-11-09 09:55:42 -080032 VENUE_NAME = 258,
33 ROAMING_CONSORTIUM = 261,
34 IP_ADDR_TYPE_AVAILABILITY = 262,
35 NAI_REALM = 263,
36 ANQP_3GPP_CELLULAR_NETWORK = 264,
37 DOMAIN_NAME = 268
38 };
39
40 /**
41 * Access Network Query Protocol subtype elements
42 * for Hotspot 2.0.
43 */
44 enum Hs20AnqpSubtypes : uint32_t {
Roshan Piuse3f25f12016-12-08 13:20:05 -080045 OPERATOR_FRIENDLY_NAME = 3,
Roshan Piusb76dbbe2016-11-09 09:55:42 -080046 WAN_METRICS = 4,
47 CONNECTION_CAPABILITY = 5,
48 OSU_PROVIDERS_LIST = 8,
49 };
50
51 /**
Roshan Pius3f050c12016-12-14 08:06:58 -080052 * Enum describing the types of RX filter supported
53 * via driver commands.
54 */
55 enum RxFilterType : uint8_t {
56 V4_MULTICAST = 0,
57 V6_MULTICAST = 1
58 };
59
60 /**
61 * Enum describing the modes of BT coexistence supported
62 * via driver commands.
63 */
64 enum BtCoexistenceMode : uint8_t {
65 ENABLED = 0,
66 DISABLED = 1,
67 SENSE = 2
68 };
69
Roshan Piusdbd09c62017-01-19 16:03:36 -080070 enum ExtRadioWorkDefaults : uint32_t {
71 TIMEOUT_IN_SECS = 10
72 };
73
Roshan Pius3f050c12016-12-14 08:06:58 -080074 /**
Roshan Pius39f588f2016-10-31 14:51:27 -070075 * Register for callbacks from this interface.
76 *
77 * These callbacks are invoked for events that are specific to this interface.
78 * Registration of multiple callback objects is supported. These objects must
79 * be automatically deleted when the corresponding client process is dead or
80 * if this interface is removed.
81 *
82 * @param callback An instance of the |ISupplicantStaIfaceCallback| HIDL
83 * interface object.
84 * @return status Status of the operation.
85 * Possible status codes:
86 * |SupplicantStatusCode.SUCCESS|,
87 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
88 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
89 */
90 registerCallback(ISupplicantStaIfaceCallback callback)
91 generates (SupplicantStatus status);
92
93 /**
94 * Reconnect to the currently active network, even if we are already
95 * connected.
96 *
97 * @return status Status of the operation.
98 * Possible status codes:
99 * |SupplicantStatusCode.SUCCESS|,
100 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
101 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
102 * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|
103 */
104 reassociate() generates (SupplicantStatus status);
105
106 /**
107 * Reconnect to the currently active network, if we are currently
108 * disconnected.
109 *
110 * @return status Status of the operation.
111 * Possible status codes:
112 * |SupplicantStatusCode.SUCCESS|,
113 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
114 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
115 * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|,
116 * |SupplicantStatusCode.FAILURE_IFACE_NOT_DISCONNECTED|
117 */
118 reconnect() generates (SupplicantStatus status);
119
120 /**
121 * Disconnect from the current active network.
122 *
123 * @return status Status of the operation.
124 * Possible status codes:
125 * |SupplicantStatusCode.SUCCESS|,
126 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
127 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
128 * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|
129 */
130 disconnect() generates (SupplicantStatus status);
131
132 /**
133 * Turn on/off power save mode for the interface.
134 *
135 * @param enable Indicate if power save is to be turned on/off.
136 * @return status Status of the operation.
137 * Possible status codes:
138 * |SupplicantStatusCode.SUCCESS|,
139 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
140 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|,
141 * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|
142 */
143 setPowerSave(bool enable) generates (SupplicantStatus status);
144
145 /**
Roshan Pius3f050c12016-12-14 08:06:58 -0800146 * Initiate TDLS discover with the provided peer MAC address.
Roshan Pius39f588f2016-10-31 14:51:27 -0700147 *
148 * @param macAddress MAC address of the peer.
149 * @return status Status of the operation.
150 * Possible status codes:
151 * |SupplicantStatusCode.SUCCESS|,
152 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
153 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
154 */
155 initiateTdlsDiscover(MacAddress macAddress)
156 generates (SupplicantStatus status);
157
158 /**
Roshan Pius3f050c12016-12-14 08:06:58 -0800159 * Initiate TDLS setup with the provided peer MAC address.
Roshan Pius39f588f2016-10-31 14:51:27 -0700160 *
161 * @param macAddress MAC address of the peer.
162 * @return status Status of the operation.
163 * Possible status codes:
164 * |SupplicantStatusCode.SUCCESS|,
165 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
166 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
167 */
168 initiateTdlsSetup(MacAddress macAddress)
169 generates (SupplicantStatus status);
170
171 /**
Roshan Pius3f050c12016-12-14 08:06:58 -0800172 * Initiate TDLS teardown with the provided peer MAC address.
Roshan Pius39f588f2016-10-31 14:51:27 -0700173 *
174 * @param macAddress MAC address of the peer.
175 * @return status Status of the operation.
176 * Possible status codes:
177 * |SupplicantStatusCode.SUCCESS|,
178 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
179 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
180 */
181 initiateTdlsTeardown(MacAddress macAddress)
182 generates (SupplicantStatus status);
Roshan Piusb76dbbe2016-11-09 09:55:42 -0800183
184 /**
185 * Initiate ANQP (for IEEE 802.11u Interworking/Hotspot 2.0) queries with the
186 * specified access point.
187 * The ANQP data fetched must be returned in the
188 * |ISupplicantStaIfaceCallback.onAnqpQueryDone| callback.
189 *
190 * @param macAddress MAC address of the access point.
191 * @param infoElements List of information elements to query for.
192 * @param subtypes List of HS20 subtypes to query for.
193 * @return status Status of the operation.
194 * Possible status codes:
195 * |SupplicantStatusCode.SUCCESS|,
196 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
197 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
198 */
199 initiateAnqpQuery(MacAddress macAddress,
200 vec<AnqpInfoId> infoElements,
201 vec<Hs20AnqpSubtypes> subTypes)
202 generates (SupplicantStatus status);
203
204 /**
205 * Initiate the Hotspot 2.0 icon query with the specified accesss point.
206 * The icon data fetched must be returned in the
207 * |ISupplicantStaIfaceCallback.onHs20IconQueryDone| callback.
208 *
209 * @param macAddress MAC address of the access point.
210 * @param fileName Name of the file to request from the access point.
211 * @return status Status of the operation.
212 * Possible status codes:
213 * |SupplicantStatusCode.SUCCESS|,
214 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
215 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
216 */
217 initiateHs20IconQuery(MacAddress macAddress, string fileName)
218 generates (SupplicantStatus status);
Roshan Pius3f050c12016-12-14 08:06:58 -0800219
220 /**
221 * Send driver command to get MAC address of the device.
222 *
223 * @return status Status of the operation.
224 * Possible status codes:
225 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800226 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
227 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800228 * @return macAddr MAC address of the device.
229 */
230 getMacAddress()
231 generates (SupplicantStatus status, MacAddress macAddr);
232
233 /**
234 * Send driver command to start RX filter.
235 *
236 * @return status Status of the operation.
237 * Possible status codes:
238 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800239 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
240 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800241 */
242 startRxFilter() generates (SupplicantStatus status);
243
244 /**
245 * Send driver command to stop RX filter.
246 *
247 * @return status Status of the operation.
248 * Possible status codes:
249 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800250 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
251 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800252 */
253 stopRxFilter() generates (SupplicantStatus status);
254
255 /**
256 * Send driver command to add the specified RX filter.
257 *
258 * @param type Type of filter.
259 * @return status Status of the operation.
260 * Possible status codes:
261 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800262 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
263 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800264 */
265 addRxFilter(RxFilterType type)
266 generates (SupplicantStatus status);
267
268 /**
269 * Send driver command to remove the specified RX filter.
270 *
271 * @param type Type of filter.
272 * @return status Status of the operation.
273 * Possible status codes:
274 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800275 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
276 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800277 */
278 removeRxFilter(RxFilterType type)
279 generates (SupplicantStatus status);
280
281 /**
282 * Send driver command to set Bluetooth coexistence mode.
283 *
284 * @param mode Mode of Bluetooth coexistence.
285 * @return status Status of the operation.
286 * Possible status codes:
287 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800288 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
289 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800290 */
291 setBtCoexistenceMode(BtCoexistenceMode mode)
292 generates (SupplicantStatus status);
293
294 /**
295 * Send driver command to set Bluetooth coexistence scan mode.
296 * When this mode is on, some of the low-level scan parameters
297 * used by the driver are changed to reduce interference
298 * with A2DP streaming.
299 *
300 * @param enable true to enable, false to disable.
301 * @return status Status of the operation.
302 * Possible status codes:
303 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800304 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
305 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800306 */
307 setBtCoexistenceScanModeEnabled(bool enable)
308 generates (SupplicantStatus status);
309
310 /**
311 * Send driver command to set suspend optimizations for power save.
312 *
313 * @param enable true to enable, false to disable.
314 * @return status Status of the operation.
315 * Possible status codes:
316 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800317 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
318 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800319 */
320 setSuspendModeEnabled(bool enable)
321 generates (SupplicantStatus status);
322
323 /**
324 * Send driver command to set country code.
325 *
326 * @param code 2 byte country code (as defined in ISO 3166) to set.
327 * @return status Status of the operation.
328 * Possible status codes:
329 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800330 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
331 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800332 */
333 setCountryCode(int8_t[2] code)
334 generates (SupplicantStatus status);
Roshan Pius08e6bba2017-01-10 14:10:19 -0800335
336 /**
337 * Initiate WPS setup in registrar role to learn the current AP configuration.
338 *
339 * @param bssid BSSID of the AP.
340 * @param pin Pin of the AP.
341 * @return status Status of the operation.
342 * Possible status codes:
343 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800344 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
345 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800346 */
347 startWpsRegistrar(Bssid bssid, string pin)
348 generates (SupplicantStatus status);
349
350 /**
351 * Initiate WPS Push Button setup.
352 * The PBC operation requires that a button is also pressed at the
353 * AP/Registrar at about the same time (2 minute window).
354 *
355 * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard.
356 * @return status Status of the operation.
357 * Possible status codes:
358 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800359 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
360 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800361 */
362 startWpsPbc(Bssid bssid) generates (SupplicantStatus status);
363
364 /**
365 * Initiate WPS Pin Keypad setup.
366 *
367 * @param pin 8 digit pin to be used.
368 * @return status Status of the operation.
369 * Possible status codes:
370 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800371 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
372 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800373 */
374 startWpsPinKeypad(string pin) generates (SupplicantStatus status);
375
376 /**
377 * Initiate WPS Pin Display setup.
378 *
379 * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard.
380 * @return status Status of the operation.
381 * Possible status codes:
382 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800383 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
384 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800385 * @return generatedPin 8 digit pin generated.
386 */
387 startWpsPinDisplay(Bssid bssid)
388 generates (SupplicantStatus status, string generatedPin);
389
390 /**
391 * Cancel any ongoing WPS operations.
392 *
393 * @return status Status of the operation.
394 * Possible status codes:
395 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius4984f9a2017-01-13 08:58:23 -0800396 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
397 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800398 */
399 cancelWps() generates (SupplicantStatus status);
Roshan Pius4984f9a2017-01-13 08:58:23 -0800400
401 /**
402 * Use external processing for SIM/USIM operations
403 *
404 * @param useExternalSim true to use external, false otherwise.
405 * @return status Status of the operation.
406 * Possible status codes:
407 * |SupplicantStatusCode.SUCCESS|,
408 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
409 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
410 */
411 setExternalSim(bool useExternalSim) generates (SupplicantStatus status);
Roshan Piusdbd09c62017-01-19 16:03:36 -0800412
413 /**
414 * External programs can request supplicant to not start offchannel
415 * operations during other tasks that may need exclusive control of the
416 * radio.
417 *
418 * This method can be used to reserve a slot for radio access. If freq is
419 * specified, other radio work items on the same channel can be completed in
420 * parallel. Otherwise, all other radio work items are blocked during
421 * execution. Timeout must be set to |ExtRadioWorkDefaults.TIMEOUT_IN_SECS|
422 * seconds by default to avoid blocking supplicant operations on the iface
423 * for excessive time. If a longer (or shorter) safety timeout is needed,
424 * that may be specified with the optional timeout parameter. This command
425 * returns an identifier for the radio work item.
426 *
427 * Once the radio work item has been started,
428 * |ISupplicant.onExtRadioWorkStart| callback is indicated that the external
429 * processing can start.
430 *
431 * @param name Name for the radio work being added.
432 * @param freqInMhz Frequency to specify. Set to 0 for all channels.
433 * @param timeoutInSec Timeout tospecify. Set to 0 for default timeout.
434 * @return status Status of the operation.
435 * Possible status codes:
436 * |SupplicantStatusCode.SUCCESS|,
437 * |SupplicantStatusCode.FAILURE_UNKNOWN|
438 * @return id Identifier for this radio work.
439 */
440 addExtRadioWork(string name, uint32_t freqInMhz, uint32_t timeoutInSec)
441 generates (SupplicantStatus status, uint32_t id);
442
443 /**
444 * Indicates to supplicant that the external radio work has completed.
445 * This allows other radio works to be performed. If this method is not
446 * invoked (e.g., due to the external program terminating), supplicant
447 * must time out the radio work item on the iface and send
448 * |ISupplicantCallback.onExtRadioWorkTimeout| event to indicate
449 * that this has happened.
450 *
451 * This method may also be used to cancel items that have been scheduled
452 * via |addExtRadioWork|, but have not yet been started (notified via
453 * |ISupplicantCallback.onExtRadioWorkStart|).
454 *
455 * @return id Identifier generated for the radio work addition
456 * (using |addExtRadioWork|).
457 * @return status Status of the operation.
458 * Possible status codes:
459 * |SupplicantStatusCode.SUCCESS|,
460 * |SupplicantStatusCode.FAILURE_UNKNOWN|
461 */
462 removeExtRadioWork(uint32_t id) generates (SupplicantStatus status);
Roshan Pius39f588f2016-10-31 14:51:27 -0700463};