From dbd09c6bb8c05d1d2f13bee9cccf585336df75e2 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Thu, 19 Jan 2017 16:03:36 -0800 Subject: supplicant(interface): Add the new radio work methods These radio work methods can be used by external programs (wificond in our case) to request wpa_supplicant to stop doing any offchannel operations. Also, 1. Add the setUpdateIdentifier method in ISupplicantStaNetwork. 2. Add the setProactiveKeyCaching method in ISupplicantStaNetwork. 3. Add sendNetworkEapSimGsmAuthFailure & sendNetworkEapSimUmtsAuthResponse in ISupplicantStaNetwork. 4. Add the setWpsDeviceType() method in ISupplicantIface. Bug: 34454675 Bug: 32581374 Test: /hardware/interfaces/update_makefiles.sh Change-Id: I83fe577f6bd39d2daef2cb203ad9a8a93657c988 --- wifi/supplicant/1.0/ISupplicantIface.hal | 13 ++++ wifi/supplicant/1.0/ISupplicantStaIface.hal | 55 +++++++++++++++ .../supplicant/1.0/ISupplicantStaIfaceCallback.hal | 14 ++++ wifi/supplicant/1.0/ISupplicantStaNetwork.hal | 78 +++++++++++++++++++++- 4 files changed, 158 insertions(+), 2 deletions(-) diff --git a/wifi/supplicant/1.0/ISupplicantIface.hal b/wifi/supplicant/1.0/ISupplicantIface.hal index c0058a01..8bb8c970 100644 --- a/wifi/supplicant/1.0/ISupplicantIface.hal +++ b/wifi/supplicant/1.0/ISupplicantIface.hal @@ -137,6 +137,19 @@ interface ISupplicantIface { */ setWpsDeviceName(string name) generates (SupplicantStatus status); + /** + * Set the device type for WPS operations. + * + * @parm type Type of device. Refer to section B.1 of Wifi P2P + * Technical specification v1.2. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_IFACE_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + setWpsDeviceType(uint8_t[8] type) generates (SupplicantStatus status); + /** * Set the manufacturer for WPS operations. * The manufacturer of the device (up to |WPS_MANUFACTURER_MAX_LEN| ASCII diff --git a/wifi/supplicant/1.0/ISupplicantStaIface.hal b/wifi/supplicant/1.0/ISupplicantStaIface.hal index c9d9ee61..68eb179e 100644 --- a/wifi/supplicant/1.0/ISupplicantStaIface.hal +++ b/wifi/supplicant/1.0/ISupplicantStaIface.hal @@ -67,6 +67,10 @@ interface ISupplicantStaIface extends ISupplicantIface { SENSE = 2 }; + enum ExtRadioWorkDefaults : uint32_t { + TIMEOUT_IN_SECS = 10 + }; + /** * Register for callbacks from this interface. * @@ -405,4 +409,55 @@ interface ISupplicantStaIface extends ISupplicantIface { * |SupplicantStatusCode.FAILURE_IFACE_INVALID| */ setExternalSim(bool useExternalSim) generates (SupplicantStatus status); + + /** + * External programs can request supplicant to not start offchannel + * operations during other tasks that may need exclusive control of the + * radio. + * + * This method can be used to reserve a slot for radio access. If freq is + * specified, other radio work items on the same channel can be completed in + * parallel. Otherwise, all other radio work items are blocked during + * execution. Timeout must be set to |ExtRadioWorkDefaults.TIMEOUT_IN_SECS| + * seconds by default to avoid blocking supplicant operations on the iface + * for excessive time. If a longer (or shorter) safety timeout is needed, + * that may be specified with the optional timeout parameter. This command + * returns an identifier for the radio work item. + * + * Once the radio work item has been started, + * |ISupplicant.onExtRadioWorkStart| callback is indicated that the external + * processing can start. + * + * @param name Name for the radio work being added. + * @param freqInMhz Frequency to specify. Set to 0 for all channels. + * @param timeoutInSec Timeout tospecify. Set to 0 for default timeout. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + * @return id Identifier for this radio work. + */ + addExtRadioWork(string name, uint32_t freqInMhz, uint32_t timeoutInSec) + generates (SupplicantStatus status, uint32_t id); + + /** + * Indicates to supplicant that the external radio work has completed. + * This allows other radio works to be performed. If this method is not + * invoked (e.g., due to the external program terminating), supplicant + * must time out the radio work item on the iface and send + * |ISupplicantCallback.onExtRadioWorkTimeout| event to indicate + * that this has happened. + * + * This method may also be used to cancel items that have been scheduled + * via |addExtRadioWork|, but have not yet been started (notified via + * |ISupplicantCallback.onExtRadioWorkStart|). + * + * @return id Identifier generated for the radio work addition + * (using |addExtRadioWork|). + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN| + */ + removeExtRadioWork(uint32_t id) generates (SupplicantStatus status); }; diff --git a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal index 4b201d41..c3ec0600 100644 --- a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal +++ b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal @@ -326,4 +326,18 @@ interface ISupplicantStaIfaceCallback { * Used to indicate the overlap of a WPS PBC connection attempt. */ oneway onWpsEventPbcOverlap(); + + /** + * Used to indicate that the external radio work can start now. + * + * @return id Identifier generated for the radio work request. + */ + oneway onExtRadioWorkStart(uint32_t id); + + /** + * Used to indicate that the external radio work request has timed out. + * + * @return id Identifier generated for the radio work request. + */ + oneway onExtRadioWorkTimeout(uint32_t id); }; diff --git a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal index b347c1dc..deaad5d8 100644 --- a/wifi/supplicant/1.0/ISupplicantStaNetwork.hal +++ b/wifi/supplicant/1.0/ISupplicantStaNetwork.hal @@ -508,8 +508,30 @@ interface ISupplicantStaNetwork extends ISupplicantNetwork { */ setEapDomainSuffixMatch(string match) generates (SupplicantStatus status); + /** - * Get ID string set for this network. + * This field can be used to enable proactive key caching which is also + * known as opportunistic PMKSA caching for WPA2. This is disabled (0) + * by default unless default value is changed with the global okc=1 + * parameter. + * + * Proactive key caching is used to make supplicant assume that the APs + * are using the same PMK and generate PMKSA cache entries without + * doing RSN pre-authentication. This requires support from the AP side + * and is normally used with wireless switches that co-locate the + * authenticator. + * + * @param enable true to set, false otherwise. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + setProactiveKeyCaching(bool enable) generates (SupplicantStatus status); + + /** + * Set ID string for this network. * Network identifier string for external scripts. * * @return idStr ID string value to set. @@ -522,6 +544,20 @@ interface ISupplicantStaNetwork extends ISupplicantNetwork { */ setIdStr(string idStr) generates (SupplicantStatus status); + /** + * Set PPS MO ID for this network. + * (Hotspot 2.0 PerProviderSubscription/UpdateIdentifier) + * + * @return id ID value to set. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_ARGS_INVALID|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + setUpdateIdentifier(uint32_t id) generates (SupplicantStatus status); + /** * Getters for the various network params. */ @@ -912,9 +948,21 @@ interface ISupplicantStaNetwork extends ISupplicantNetwork { * |SupplicantStatusCode.FAILURE_UNKNOWN|, * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| */ - sendNetworkEapSimGsmAuthResponse(NetworkResponseEapSimGsmAuthParams params) + sendNetworkEapSimGsmAuthResponse(vec params) generates (SupplicantStatus status); + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimGsmAuthRequest| request. + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + sendNetworkEapSimGsmAuthFailure() generates (SupplicantStatus status); + /** * Used to send a response to the * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. @@ -929,6 +977,32 @@ interface ISupplicantStaNetwork extends ISupplicantNetwork { sendNetworkEapSimUmtsAuthResponse(NetworkResponseEapSimUmtsAuthParams params) generates (SupplicantStatus status); + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. + * + * @param auts Params to be used for EAP UMTS authentication. + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + sendNetworkEapSimUmtsAutsResponse(uint8_t[14] auts) + generates (SupplicantStatus status); + + /** + * Used to send a response to the + * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request. + * + * @return status Status of the operation. + * Possible status codes: + * |SupplicantStatusCode.SUCCESS|, + * |SupplicantStatusCode.FAILURE_UNKNOWN|, + * |SupplicantStatusCode.FAILURE_NETWORK_INVALID| + */ + sendNetworkEapSimUmtsAuthFailure() generates (SupplicantStatus status); + /** * Used to send a response to the * |ISupplicantNetworkCallback.onNetworkEapIdentityRequest| request. -- cgit v1.2.3-54-g00ecf