diff options
| author | Hai Shalom <haishalom@google.com> | 2019-01-03 17:05:28 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-01-03 17:05:28 +0000 |
| commit | 275c83c62b09ce8cc87f2bb7ea345cafc27e32fc (patch) | |
| tree | ac2b97d0c15cfde8f1991e961a5113553ecf3c19 | |
| parent | 8daea489c83669d52c2a75497de0f9547f85e1ed (diff) | |
| parent | e6f614c2e048d478563c06142901f59aa4ac85e5 (diff) | |
Merge "[DPP] Added new DPP API and new callbacks"
| -rw-r--r-- | wifi/supplicant/1.2/Android.bp | 9 | ||||
| -rw-r--r-- | wifi/supplicant/1.2/ISupplicantStaIface.hal | 100 | ||||
| -rw-r--r-- | wifi/supplicant/1.2/ISupplicantStaIfaceCallback.hal | 51 | ||||
| -rw-r--r-- | wifi/supplicant/1.2/types.hal | 63 |
4 files changed, 222 insertions, 1 deletions
diff --git a/wifi/supplicant/1.2/Android.bp b/wifi/supplicant/1.2/Android.bp index 529dad4409..18e1cca7e1 100644 --- a/wifi/supplicant/1.2/Android.bp +++ b/wifi/supplicant/1.2/Android.bp @@ -10,13 +10,22 @@ hidl_interface { "ISupplicant.hal", "ISupplicantP2pIface.hal", "ISupplicantStaIface.hal", + "ISupplicantStaIfaceCallback.hal", "ISupplicantStaNetwork.hal", + "types.hal", ], interfaces: [ "android.hardware.wifi.supplicant@1.0", "android.hardware.wifi.supplicant@1.1", "android.hidl.base@1.0", ], + types: [ + "DppAkm", + "DppNetRole", + "DppSuccessCode", + "DppProgressCode", + "DppFailureCode", + ], gen_java: true, } diff --git a/wifi/supplicant/1.2/ISupplicantStaIface.hal b/wifi/supplicant/1.2/ISupplicantStaIface.hal index a338c6a2c2..9152a647a3 100644 --- a/wifi/supplicant/1.2/ISupplicantStaIface.hal +++ b/wifi/supplicant/1.2/ISupplicantStaIface.hal @@ -18,6 +18,7 @@ package android.hardware.wifi.supplicant@1.2; import @1.0::SupplicantStatus; import @1.1::ISupplicantStaIface; +import @1.2::ISupplicantStaIfaceCallback; import @1.2::ISupplicantStaNetwork; /** @@ -25,6 +26,24 @@ import @1.2::ISupplicantStaNetwork; * interface (e.g wlan0) it controls. */ interface ISupplicantStaIface extends @1.1::ISupplicantStaIface { + /** + * Register for callbacks from this interface. + * + * These callbacks are invoked for events that are specific to this interface. + * Registration of multiple callback objects is supported. These objects must + * be automatically deleted when the corresponding client process is dead or + * if this interface is removed. + * + * @param callback An instance of the |ISupplicantStaIfaceCallback| HIDL + * interface object. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID| + */ + registerCallback_1_2(ISupplicantStaIfaceCallback callback) + generates (SupplicantStatus status); /** * Get Key management capabilities of the device @@ -38,5 +57,84 @@ interface ISupplicantStaIface extends @1.1::ISupplicantStaIface { */ getKeyMgmtCapabilities() generates (SupplicantStatus status, bitfield<KeyMgmtMask> keyMgmtMask); -}; + /** + * Add a DPP peer URI. URI is acquired externally, e.g. by scanning a QR code + * + * @param uri Peer's DPP URI. + * @return status Status of the operation, and an ID for the URI. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + addDppPeerUri(string uri) + generates (SupplicantStatus status, uint32_t id); + + /** + * Remove a DPP peer URI. + * + * @param id The ID of the URI, as returned by |addDppPeerUri|. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + removeDppUri(uint32_t id) + generates (SupplicantStatus status); + + /** + * Start DPP in Configurator-Initiator mode. + * + * @param peerBootstrapId Peer device's URI ID. + * @param ownBootstrapId Local device's URI ID (0 for none, optional). + * @param ssid Network SSID to send to peer (SAE/PSK mode). + * @param password Network password to send to peer (SAE/PSK mode). + * @param psk Network PSK to send to peer (PSK mode only). Either password or psk should be set. + * @param netRole Role to configure the peer, |DppNetRole.DPP_NET_ROLE_STA| or + * |DppNetRole.DPP_NET_ROLE_AP|. + * @param securityAkm Security AKM to use (See DppAkm). + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + startDppConfiguratorInitiator(uint32_t peerBootstrapId, + uint32_t ownBootstrapId, string ssid, string password, + string psk, DppNetRole netRole, DppAkm securityAkm) + generates (SupplicantStatus status); + + /** + * Start DPP in Enrollee-Initiator mode. + * + * @param peerBootstrapId Peer device's URI ID. + * @param ownBootstrapId Local device's URI ID (0 for none, optional). + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + startDppEnrolleeInitiator(uint32_t peerBootstrapId, + uint32_t ownBootstrapId) + generates (SupplicantStatus status); + + /** + * Stop DPP Initiator operation. + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + stopDppInitiator() + generates (SupplicantStatus status); +}; diff --git a/wifi/supplicant/1.2/ISupplicantStaIfaceCallback.hal b/wifi/supplicant/1.2/ISupplicantStaIfaceCallback.hal new file mode 100644 index 0000000000..5d5cccfb4a --- /dev/null +++ b/wifi/supplicant/1.2/ISupplicantStaIfaceCallback.hal @@ -0,0 +1,51 @@ +/* + * Copyright 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.wifi.supplicant@1.2; + +import @1.1::ISupplicantStaIfaceCallback; +import @1.0::Ssid; + +/** + * Callback Interface exposed by the supplicant service + * for each station mode interface (ISupplicantStaIface). + * + * Clients need to host an instance of this HIDL interface object and + * pass a reference of the object to the supplicant via the + * corresponding |ISupplicantStaIface.registerCallback_1_2| method. + */ +interface ISupplicantStaIfaceCallback extends @1.1::ISupplicantStaIfaceCallback { + /** + * Indicates DPP configuration received success event (Enrolee mode). + */ + oneway onDppSuccessConfigReceived(Ssid ssid, string password, uint8_t[32] psk, + DppAkm securityAkm); + + /** + * Indicates DPP configuration sent success event (Configurator mode). + */ + oneway onDppSuccess(DppSuccessCode code); + + /** + * Indicates a DPP progress event. + */ + oneway onDppProgress(DppProgressCode code); + + /** + * Indicates a DPP failure event. + */ + oneway onDppFailure(DppFailureCode code); +}; diff --git a/wifi/supplicant/1.2/types.hal b/wifi/supplicant/1.2/types.hal new file mode 100644 index 0000000000..576b4f51c1 --- /dev/null +++ b/wifi/supplicant/1.2/types.hal @@ -0,0 +1,63 @@ +/* + * Copyright 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.hardware.wifi.supplicant@1.2; + +/** + * DppAkm: The various AKMs that can be provisioned using DPP. + */ +enum DppAkm : uint32_t { + PSK, + PSK_SAE, + SAE, + DPP, +}; + +/** + * DppNetRole: The network role that the configurator offers the enrollee. + */ +enum DppNetRole: uint32_t { + STA, + AP, +}; + +/** + * DppSuccessCode: Success codes for DPP (Easy Connect) + */ +enum DppSuccessCode : uint32_t { + CONFIGURATION_SENT, +}; + +/** + * DppProgressCode: Progress codes for DPP (Easy Connect) + */ +enum DppProgressCode : uint32_t { + AUTHENTICATION_SUCCESS, + RESPONSE_PENDING, +}; + +/** + * DppFailureCode: Error codes for DPP (Easy Connect) + */ +enum DppFailureCode : uint32_t { + INVALID_URI, + AUTHENTICATION, + NOT_COMPATIBLE, + CONFIGURATION, + BUSY, + TIMEOUT, + FAILURE, +}; |
