blob: 9b6ec5b567af9bced46c1e6113356aa2be076d91 [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 ISupplicantP2pIfaceCallback;
21
22/**
Roshan Pius8c6a8772016-11-03 09:37:57 -070023 * Interface exposed by the supplicant for each P2P mode network
Roshan Pius39f588f2016-10-31 14:51:27 -070024 * interface (e.g p2p0) it controls.
25 */
26interface ISupplicantP2pIface extends ISupplicantIface {
Roshan Pius756ad992016-11-07 10:29:48 -080027 enum WpsProvisionMethod : uint32_t {
28 /**
29 * Push button method.
30 */
31 PBC,
32 /**
33 * Display pin method configuration - pin is generated and displayed on
34 * device.
35 */
36 DISPLAY,
37 /**
38 * Keypad pin method configuration - pin is entered on device.
39 */
Roshan Pius282a0b32016-12-08 11:08:14 -080040 KEYPAD
Roshan Pius756ad992016-11-07 10:29:48 -080041 };
42
Roshan Pius39f588f2016-10-31 14:51:27 -070043 /**
Roshan Pius282a0b32016-12-08 11:08:14 -080044 * Use to specify a range of frequencies.
45 * For example: 2412-2432,2462,5000-6000, etc.
46 */
47 struct FreqRange {
48 uint32_t min;
49 uint32_t max;
50 };
51
52 /**
Roshan Pius3f050c12016-12-14 08:06:58 -080053 * Enum describing the modes of Miracast supported
54 * via driver commands.
55 */
56 enum MiracastMode : uint8_t {
57 DISABLED = 0,
58 /**
59 * Operating as source.
60 */
61 SOURCE = 1,
62 /**
63 * Operating as sink.
64 */
65 SINK = 2
66 };
67
68 /**
Roshan Pius39f588f2016-10-31 14:51:27 -070069 * Register for callbacks from this interface.
70 *
71 * These callbacks are invoked for events that are specific to this interface.
72 * Registration of multiple callback objects is supported. These objects must
73 * be automatically deleted when the corresponding client process is dead or
74 * if this interface is removed.
75 *
76 * @param callback An instance of the |ISupplicantP2pIfaceCallback| HIDL
77 * interface object.
78 * @return status Status of the operation.
79 * Possible status codes:
80 * |SupplicantStatusCode.SUCCESS|,
81 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
82 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
83 */
84 registerCallback(ISupplicantP2pIfaceCallback callback)
85 generates (SupplicantStatus status);
Roshan Pius756ad992016-11-07 10:29:48 -080086
87 /**
88 * Gets the MAC address of the device.
89 *
90 * @return status Status of the operation.
91 * Possible status codes:
92 * |SupplicantStatusCode.SUCCESS|,
93 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
94 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
95 * @return deviceAddress MAC address of the device.
96 */
97 getDeviceAddress()
98 generates (SupplicantStatus status, MacAddress deviceAddress);
99
100 /**
101 * Set the postfix to be used for P2P SSID's.
102 *
103 * @param postfix String to be appended to SSID.
104 * @return status Status of the operation.
105 * Possible status codes:
106 * |SupplicantStatusCode.SUCCESS|,
107 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
108 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
109 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
110 */
Roshan Pius282a0b32016-12-08 11:08:14 -0800111 setSsidPostfix(vec<uint8_t> postfix) generates (SupplicantStatus status);
Roshan Pius756ad992016-11-07 10:29:48 -0800112
113 /**
114 * Set the Maximum idle time in seconds for P2P groups.
115 * This value controls how long a P2P group is maintained after there
116 * is no other members in the group. As a group owner, this means no
117 * associated stations in the group. As a P2P client, this means no
118 * group owner seen in scan results.
119 *
Roshan Pius282a0b32016-12-08 11:08:14 -0800120 * @param groupIfName Group interface name to use.
Roshan Pius756ad992016-11-07 10:29:48 -0800121 * @param timeoutInSec Timeout value in seconds.
122 * @return status Status of the operation.
123 * Possible status codes:
124 * |SupplicantStatusCode.SUCCESS|,
125 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
126 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
127 */
Roshan Pius282a0b32016-12-08 11:08:14 -0800128 setGroupIdle(string groupIfName, uint32_t timeoutInSec)
129 generates (SupplicantStatus status);
Roshan Pius756ad992016-11-07 10:29:48 -0800130
131 /**
132 * Turn on/off power save mode for the interface.
133 *
Roshan Pius282a0b32016-12-08 11:08:14 -0800134 * @param groupIfName Group interface name to use.
Roshan Pius756ad992016-11-07 10:29:48 -0800135 * @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 */
Roshan Pius282a0b32016-12-08 11:08:14 -0800143 setPowerSave(string groupIfName, bool enable)
144 generates (SupplicantStatus status);
Roshan Pius756ad992016-11-07 10:29:48 -0800145
146 /**
147 * Initiate a P2P service discovery with an optional timeout.
148 *
149 * @param timeoutInSec Max time to be spent is peforming discovery.
150 * Set to 0 to indefinely continue discovery untill and explicit
151 * |stopFind| is sent.
152 * @return status Status of the operation.
153 * Possible status codes:
154 * |SupplicantStatusCode.SUCCESS|,
155 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
156 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Ningyuan Wang94a07c42017-04-13 15:40:26 -0700157 * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|
Roshan Pius756ad992016-11-07 10:29:48 -0800158 */
159 find(uint32_t timeoutInSec) generates (SupplicantStatus status);
160
161 /**
162 * Stop an ongoing P2P service discovery.
163 *
164 * @return status Status of the operation.
165 * Possible status codes:
166 * |SupplicantStatusCode.SUCCESS|,
167 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
168 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Ningyuan Wang94a07c42017-04-13 15:40:26 -0700169 * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|
Roshan Pius756ad992016-11-07 10:29:48 -0800170 */
171 stopFind() generates (SupplicantStatus status);
172
173 /**
174 * Flush P2P peer table and state.
175 *
176 * @return status Status of the operation.
177 * Possible status codes:
178 * |SupplicantStatusCode.SUCCESS|,
179 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
180 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
181 */
182 flush() generates (SupplicantStatus status);
183
184 /**
185 * Start P2P group formation with a discovered P2P peer. This includes
186 * optional group owner negotiation, group interface setup, provisioning,
187 * and establishing data connection.
188 *
189 * @param peerAddress MAC address of the device to connect to.
190 * @method provisionMethod Provisioning method to use.
191 * @param preSelectedPin Pin to be used, if |provisionMethod| uses one of the
192 * preselected |PIN*| methods.
193 * @param joinExistingGroup Indicates that this is a command to join an
194 * existing group as a client. It skips the group owner negotiation
195 * part. This must send a Provision Discovery Request message to the
196 * target group owner before associating for WPS provisioning.
197 * @param persistent Used to request a persistent group to be formed.
198 * @param goIntent Used to override the default Intent for this group owner
199 * negotiation (Values from 1-15). Refer to section 4.1.6 in
200 * Wi-Fi Peer-to-Peer (P2P) Technical Specification Version 1.7.
201 * @return status Status of the operation.
202 * Possible status codes:
203 * |SupplicantStatusCode.SUCCESS|,
204 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
205 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
206 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
207 * @return generatedPin Pin generated, if |provisionMethod| uses one of the
208 * generated |PIN*| methods.
209 */
210 connect(MacAddress peerAddress,
211 WpsProvisionMethod provisionMethod,
Roshan Pius282a0b32016-12-08 11:08:14 -0800212 string preSelectedPin,
Roshan Pius756ad992016-11-07 10:29:48 -0800213 bool joinExistingGroup,
214 bool persistent,
215 uint32_t goIntent)
Roshan Pius282a0b32016-12-08 11:08:14 -0800216 generates (SupplicantStatus status, string generatedPin);
Roshan Pius756ad992016-11-07 10:29:48 -0800217
218 /**
219 * Cancel an ongoing P2P group formation and joining-a-group related
220 * operation. This operation unauthorizes the specific peer device (if any
221 * had been authorized to start group formation), stops P2P find (if in
222 * progress), stops pending operations for join-a-group, and removes the
223 * P2P group interface (if one was used) that is in the WPS provisioning
224 * step. If the WPS provisioning step has been completed, the group is not
225 * terminated.
226 *
227 * @return status Status of the operation.
228 * Possible status codes:
229 * |SupplicantStatusCode.SUCCESS|,
230 * |SupplicantStatusCode.FAILURE_NOT_STARTED|,
231 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
232 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
233 */
234 cancelConnect() generates (SupplicantStatus status);
235
236 /**
237 * Send P2P provision discovery request to the specified peer. The
238 * parameters for this command are the P2P device address of the peer and the
239 * desired configuration method.
240 *
241 * @param peerAddress MAC address of the device to send discovery.
242 * @method provisionMethod Provisioning method to use.
243 * @return status Status of the operation.
244 * Possible status codes:
245 * |SupplicantStatusCode.SUCCESS|,
246 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
247 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
248 */
249 provisionDiscovery(MacAddress peerAddress,
250 WpsProvisionMethod provisionMethod)
251 generates (SupplicantStatus status);
252
253 /**
254 * Set up a P2P group owner manually (i.e., without group owner
255 * negotiation with a specific peer). This is also known as autonomous
Roshan Pius43a4e122017-01-11 08:17:59 -0800256 * group owner. Optional |persistentNetworkId| may be used to specify
257 * restart of a persistent group.
Roshan Pius756ad992016-11-07 10:29:48 -0800258 *
259 * @param persistent Used to request a persistent group to be formed.
260 * @param persistentNetworkId Used to specify the restart of a persistent
Roshan Pius43a4e122017-01-11 08:17:59 -0800261 * group. Set to UINT32_MAX for a non-persistent group.
Roshan Pius756ad992016-11-07 10:29:48 -0800262 * @return status Status of the operation.
263 * Possible status codes:
264 * |SupplicantStatusCode.SUCCESS|,
265 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
266 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
267 */
268 addGroup(bool persistent, SupplicantNetworkId persistentNetworkId)
269 generates (SupplicantStatus status);
270
271 /**
272 * Terminate a P2P group. If a new virtual network interface was used for
273 * the group, it must also be removed. The network interface name of the
274 * group interface is used as a parameter for this command.
275 *
276 * @param groupIfName Group interface name to use.
277 * @return status Status of the operation.
278 * Possible status codes:
279 * |SupplicantStatusCode.SUCCESS|,
280 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
281 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
282 */
283 removeGroup(string groupIfName) generates (SupplicantStatus status);
284
285 /**
286 * Reject connection attempt from a peer (specified with a device
287 * address). This is a mechanism to reject a pending group owner negotiation
288 * with a peer and request to automatically block any further connection or
289 * discovery of the peer.
290 *
291 * @param peerAddress MAC address of the device to reject.
292 * @return status Status of the operation.
293 * Possible status codes:
294 * |SupplicantStatusCode.SUCCESS|,
295 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
296 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Ningyuan Wang94a07c42017-04-13 15:40:26 -0700297 * |SupplicantStatusCode.FAILURE_IFACE_DISABLED|
Roshan Pius756ad992016-11-07 10:29:48 -0800298 */
299 reject(MacAddress peerAddress) generates (SupplicantStatus status);
300
301 /**
302 * Invite a device to a persistent group.
303 * If the peer device is the group owner of the persistent group, the peer
304 * parameter is not needed. Otherwise it is used to specify which
305 * device to invite. |goDeviceAddress| parameter may be used to override
306 * the group owner device address for Invitation Request should it not be
307 * known for some reason (this should not be needed in most cases).
308 *
309 * @param groupIfName Group interface name to use.
310 * @param goDeviceAddress MAC address of the group owner device.
311 * @param peerAddress MAC address of the device to invite.
312 * @return status Status of the operation.
313 * Possible status codes:
314 * |SupplicantStatusCode.SUCCESS|,
315 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
316 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
317 */
318 invite(string groupIfName, MacAddress goDeviceAddress, MacAddress peerAddress)
319 generates (SupplicantStatus status);
320
321 /**
322 * Reinvoke a device from a persistent group.
323 *
324 * @param persistentNetworkId Used to specify the persistent group.
325 * @param peerAddress MAC address of the device to reinvoke.
326 * @return status Status of the operation.
327 * Possible status codes:
328 * |SupplicantStatusCode.SUCCESS|,
329 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
330 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
331 */
332 reinvoke(SupplicantNetworkId persistentNetworkId, MacAddress peerAddress)
333 generates (SupplicantStatus status);
334
335 /**
336 * Configure Extended Listen Timing.
337 *
338 * If enabled, listen state must be entered every |intervalInMillis| for at
339 * least |periodInMillis|. Both values have acceptable range of 1-65535
340 * (with interval obviously having to be larger than or equal to duration).
341 * If the P2P module is not idle at the time the Extended Listen Timing
342 * timeout occurs, the Listen State operation must be skipped.
343 *
344 * @param periodInMillis Period in milliseconds.
345 * @param intervalInMillis Interval in milliseconds.
346 * @return status Status of the operation.
347 * Possible status codes:
348 * |SupplicantStatusCode.SUCCESS|,
349 * |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
350 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
351 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
352 */
Roshan Piuse663f832016-12-16 15:32:27 -0800353 configureExtListen(uint32_t periodInMillis,
Roshan Pius756ad992016-11-07 10:29:48 -0800354 uint32_t intervalInMillis)
355 generates (SupplicantStatus status);
356
357 /**
358 * Set P2P Listen channel.
359 *
360 * When specifying a social channel on the 2.4 GHz band (1/6/11) there is no
361 * need to specify the operating class since it defaults to 81. When
362 * specifying a social channel on the 60 GHz band (2), specify the 60 GHz
363 * operating class (180).
364 *
365 * @param channel Wifi channel. eg, 1, 6, 11.
366 * @param operatingClass Operating Class indicates the channel set of the AP
367 * indicated by this BSSID
368 * @return status Status of the operation.
369 * Possible status codes:
370 * |SupplicantStatusCode.SUCCESS|,
371 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
372 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
373 */
374 setListenChannel(uint32_t channel, uint32_t operatingClass)
375 generates (SupplicantStatus status);
376
377 /**
Roshan Pius282a0b32016-12-08 11:08:14 -0800378 * Set P2P disallowed frequency ranges.
379 *
380 * Specify ranges of frequencies that are disallowed for any p2p operations.
381
382 * @param ranges List of ranges which needs to be disallowed.
383 * @return status Status of the operation.
384 * Possible status codes:
385 * |SupplicantStatusCode.SUCCESS|,
386 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
387 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
388 */
389 setDisallowedFrequencies(vec<FreqRange> ranges)
390 generates (SupplicantStatus status);
391
392 /**
Roshan Pius756ad992016-11-07 10:29:48 -0800393 * Gets the operational SSID of the device.
394 *
395 * @param peerAddress MAC address of the peer.
396 * @return status Status of the operation.
397 * Possible status codes:
398 * |SupplicantStatusCode.SUCCESS|,
399 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
400 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
401 * @return ssid SSID of the device
402 */
403 getSsid(MacAddress peerAddress)
404 generates (SupplicantStatus status, Ssid ssid);
405
406 /**
407 * Gets the capability of the group which the device is a
408 * member of.
409 *
410 * @param peerAddress MAC address of the peer.
411 * @return status Status of the operation.
412 * Possible status codes:
413 * |SupplicantStatusCode.SUCCESS|,
414 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
415 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius5c3a0d92017-01-18 09:23:18 -0800416 * @return capabilityMask Combination of |P2pGroupCapabilityMask| values.
Roshan Pius756ad992016-11-07 10:29:48 -0800417 */
418 getGroupCapability(MacAddress peerAddress)
Roshan Pius5c3a0d92017-01-18 09:23:18 -0800419 generates (SupplicantStatus status,
420 bitfield<P2pGroupCapabilityMask> capabilities);
Roshan Pius756ad992016-11-07 10:29:48 -0800421
422 /**
423 * This command can be used to add a bonjour service.
424 *
425 * @param query Hex dump of the query data.
426 * @param return Hex dump of the response data.
427 * @return status Status of the operation.
428 * Possible status codes:
429 * |SupplicantStatusCode.SUCCESS|,
430 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
431 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
432 */
433 addBonjourService(vec<uint8_t> query, vec<uint8_t> response)
434 generates (SupplicantStatus status);
435
436 /**
437 * This command can be used to remove a bonjour service.
438 *
439 * @param query Hex dump of the query data.
440 * @return status Status of the operation.
441 * Possible status codes:
442 * |SupplicantStatusCode.SUCCESS|,
443 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
444 * |SupplicantStatusCode.FAILURE_NOT_STARTED|,
445 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
446 */
447 removeBonjourService(vec<uint8_t> query) generates (SupplicantStatus status);
448
449 /**
450 * This command can be used to add a UPNP service.
451 *
452 * @param version Version to be used.
453 * @package serviceName Service name to be used.
454 * @return status Status of the operation.
455 * Possible status codes:
456 * |SupplicantStatusCode.SUCCESS|,
457 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
458 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
459 */
460 addUpnpService(uint32_t version, string serviceName)
461 generates (SupplicantStatus status);
462
463 /**
464 * This command can be used to remove a UPNP service.
465 *
466 * @param version Version to be used.
467 * @package serviceName Service name to be used.
468 * @return status Status of the operation.
469 * Possible status codes:
470 * |SupplicantStatusCode.SUCCESS|,
471 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
472 * |SupplicantStatusCode.FAILURE_NOT_STARTED|,
473 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
474 */
475 removeUpnpService(uint32_t version, string serviceName)
476 generates (SupplicantStatus status);
477
478 /**
479 * This command can be used to flush all services from the
480 * device.
481 *
482 * @return status Status of the operation.
483 * Possible status codes:
484 * |SupplicantStatusCode.SUCCESS|,
485 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
486 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
487 */
Roshan Piuse663f832016-12-16 15:32:27 -0800488 flushServices() generates (SupplicantStatus status);
Roshan Pius756ad992016-11-07 10:29:48 -0800489
490 /**
491 * Schedule a P2P service discovery request. The parameters for this command
492 * are the device address of the peer device (or 00:00:00:00:00:00 for
493 * wildcard query that is sent to every discovered P2P peer that supports
494 * service discovery) and P2P Service Query TLV(s) as hexdump.
495 *
496 * @param peerAddress MAC address of the device to discover.
497 * @param query Hex dump of the query data.
498 * @return status Status of the operation.
499 * Possible status codes:
500 * |SupplicantStatusCode.SUCCESS|,
501 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
502 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
503 * @return identifier Identifier for the request. Can be used to cancel the
504 * request.
505 */
506 requestServiceDiscovery(MacAddress peerAddress, vec<uint8_t> query)
507 generates (SupplicantStatus status, uint64_t identifier);
508
509 /**
510 * Cancel a previous service discovery request.
511 *
512 * @return identifier Identifier for the request to cancel.
513 * @return status Status of the operation.
514 * Possible status codes:
515 * |SupplicantStatusCode.SUCCESS|,
516 * |SupplicantStatusCode.FAILURE_NOT_STARTED|,
517 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
518 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
519 */
520 cancelServiceDiscovery(uint64_t identifier)
521 generates (SupplicantStatus status);
Roshan Pius3f050c12016-12-14 08:06:58 -0800522
523 /**
524 * Send driver command to set Miracast mode.
525 *
526 * @param mode Mode of Miracast.
527 * @return status Status of the operation.
528 * Possible status codes:
529 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius09f2ce32017-01-11 14:05:17 -0800530 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
531 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius3f050c12016-12-14 08:06:58 -0800532 */
533 setMiracastMode(MiracastMode mode)
534 generates (SupplicantStatus status);
Roshan Pius08e6bba2017-01-10 14:10:19 -0800535
536 /**
537 * Initiate WPS Push Button setup.
538 * The PBC operation requires that a button is also pressed at the
539 * AP/Registrar at about the same time (2 minute window).
540 *
541 * @param groupIfName Group interface name to use.
542 * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard.
543 * @return status Status of the operation.
544 * Possible status codes:
545 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius09f2ce32017-01-11 14:05:17 -0800546 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
547 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800548 */
549 startWpsPbc(string groupIfName, Bssid bssid)
550 generates (SupplicantStatus status);
551
552 /**
553 * Initiate WPS Pin Keypad setup.
554 *
555 * @param groupIfName Group interface name to use.
556 * @param pin 8 digit pin to be used.
557 * @return status Status of the operation.
558 * Possible status codes:
559 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius09f2ce32017-01-11 14:05:17 -0800560 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
561 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800562 */
563 startWpsPinKeypad(string groupIfName, string pin)
564 generates (SupplicantStatus status);
565
566 /**
567 * Initiate WPS Pin Display setup.
568 *
569 * @param groupIfName Group interface name to use.
570 * @param bssid BSSID of the AP. Use zero'ed bssid to indicate wildcard.
571 * @return status Status of the operation.
572 * Possible status codes:
573 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius09f2ce32017-01-11 14:05:17 -0800574 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
575 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
Roshan Pius08e6bba2017-01-10 14:10:19 -0800576 * @return generatedPin 8 digit pin generated.
577 */
578 startWpsPinDisplay(string groupIfName, Bssid bssid)
579 generates (SupplicantStatus status, string generatedPin);
580
581 /**
582 * Cancel any ongoing WPS operations.
583 *
584 * @param groupIfName Group interface name to use.
585 * @return status Status of the operation.
586 * Possible status codes:
587 * |SupplicantStatusCode.SUCCESS|,
Roshan Pius09f2ce32017-01-11 14:05:17 -0800588 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
589 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
590
Roshan Pius08e6bba2017-01-10 14:10:19 -0800591 */
592 cancelWps(string groupIfName) generates (SupplicantStatus status);
Roshan Pius09f2ce32017-01-11 14:05:17 -0800593
594 /**
595 * Enable/Disable Wifi Display.
596 *
597 * @param enable true to enable, false to disable.
598 * @return status Status of the operation.
599 * Possible status codes:
600 * |SupplicantStatusCode.SUCCESS|,
601 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
602 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
603 */
604 enableWfd(bool enable) generates (SupplicantStatus status);
605
606 /**
607 * Set Wifi Display device info.
608 *
609 * @param info WFD device info as described in section 5.1.2 of WFD technical
610 * specification v1.0.0.
611 * @return status Status of the operation.
612 * Possible status codes:
613 * |SupplicantStatusCode.SUCCESS|,
614 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
615 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
616 */
Roshan Piusd65be162017-03-17 15:44:56 -0700617 setWfdDeviceInfo(uint8_t[6] info) generates (SupplicantStatus status);
Roshan Pius72b5eb02017-02-13 13:19:38 -0800618
619 /**
620 * Creates a NFC handover request message.
621 *
622 * @return status Status of the operation.
623 * Possible status codes:
624 * |SupplicantStatusCode.SUCCESS|,
625 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
626 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
627 * @return request Bytes representing the handover request as specified in
628 * section 3.1.1 of NFC Connection Handover 1.2 Technical
629 * Specification.
630 */
631 createNfcHandoverRequestMessage()
632 generates (SupplicantStatus status, vec<uint8_t> request);
633
634 /**
635 * Creates a NFC handover select message.
636 *
637 * @return status Status of the operation.
638 * Possible status codes:
639 * |SupplicantStatusCode.SUCCESS|,
640 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
641 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
642 * @return select Bytes representing the handover select as specified in
643 * section 3.1.2 of NFC Connection Handover 1.2 Technical
644 * Specification.
645 */
646 createNfcHandoverSelectMessage()
647 generates (SupplicantStatus status, vec<uint8_t> select);
648
649 /**
650 * Report the response of the NFC handover request.
651 *
652 * @param request Bytes representing the handover request as specified in
653 * section 3.1.1 of NFC Connection Handover 1.2 Technical
654 * Specification.
655 * @return status Status of the operation.
656 * Possible status codes:
657 * |SupplicantStatusCode.SUCCESS|,
658 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
659 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
660 */
661 reportNfcHandoverResponse(vec<uint8_t> request)
662 generates (SupplicantStatus status);
663
664 /**
665 * Report the initiation of the NFC handover select.
666 *
667 * @param select Bytes representing the handover select as specified in
668 * section 3.1.2 of NFC Connection Handover 1.2 Technical
669 * Specification.
670 * @return status Status of the operation.
671 * Possible status codes:
672 * |SupplicantStatusCode.SUCCESS|,
673 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
674 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
675 */
676 reportNfcHandoverInitiation(vec<uint8_t> select)
677 generates (SupplicantStatus status);
Roshan Pius94b4bdc2017-03-16 09:38:26 -0700678
679 /**
680 * Persist the current configuration to disk.
681 *
682 * @return status Status of the operation.
683 * Possible status codes:
684 * |SupplicantStatusCode.SUCCESS|,
685 * |SupplicantStatusCode.FAILURE_UNKNOWN|,
686 * |SupplicantStatusCode.FAILURE_IFACE_INVALID|
687 */
688 saveConfig() generates (SupplicantStatus status);
Roshan Pius39f588f2016-10-31 14:51:27 -0700689};