supplicant(interface): Add support for Hotspot 2.0
HIDL interface to
a) Initiate ANQP queries & icon queries for hotspot 2.0
b) Add callbacks for the reception of WNM frames (hotspot
remediation, deauth imminent notice).
Bug: 31116047
Test: ./hardware/interfaces/update-makefiles.sh
Change-Id: Ib3353f04b493f50c6415d1f3475efa957d921540
diff --git a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
index 77423ed..4717441 100644
--- a/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
+++ b/wifi/supplicant/1.0/ISupplicantStaIfaceCallback.hal
@@ -105,6 +105,40 @@
};
/**
+ * OSU Method. Refer to section 4.8.1.3 of the Hotspot 2.0 spec.
+ */
+ enum OsuMethod : uint8_t {
+ OMA_DM = 0,
+ SOAP_XML_SPP = 1
+ };
+
+ /**
+ * ANQP data for IEEE Std 802.11u-2011.
+ * The format of the data within these elements follows the IEEE
+ * Std 802.11u-2011 standard.
+ */
+ struct AnqpData {
+ vec<uint8_t> venueName;
+ vec<uint8_t> roamingConsortium;
+ vec<uint8_t> ipAddrTypeAvailability;
+ vec<uint8_t> naiRealm;
+ vec<uint8_t> anqp3gppCellularNetwork;
+ vec<uint8_t> domainName;
+ };
+
+ /**
+ * ANQP data for Hotspot 2.0.
+ * The format of the data within these elements follows the Hotspot 2.0
+ * standard.
+ */
+ struct Hs20AnqpData {
+ vec<uint8_t> operatorFriendlyName;
+ vec<uint8_t> wanMetrics;
+ vec<uint8_t> connectionCapability;
+ vec<uint8_t> osuProvidersList;
+ };
+
+ /**
* Used to indicate that a new network has been added.
*
* @param id Network ID allocated to the corresponding network.
@@ -138,4 +172,49 @@
*/
oneway onStateChanged(
State newState, Bssid bssid, SupplicantNetworkId id, Ssid ssid);
+
+ /**
+ * Used to indicate the result of ANQP (either for IEEE 802.11u Interworking
+ * or Hotspot 2.0) query.
+ *
+ * @param macAddress MAC address of the access point.
+ * @param data ANQP data fetched from the access point.
+ * All the fields in this struct must be empty if the query failed.
+ * @param hs20Data ANQP data fetched from the Hotspot 2.0 access point.
+ * All the fields in this struct must be empty if the query failed.
+ */
+ oneway onAnqpQueryDone(MacAddress macAddress,
+ AnqpData data,
+ Hs20AnqpData hs20Data);
+
+ /**
+ * Used to indicate the result of Hotspot 2.0 Icon query.
+ *
+ * @param macAddress MAC address of the access point.
+ * @param fileName Name of the file that was requested.
+ * @param data Icon data fetched from the access point.
+ * Must be empty if the query failed.
+ */
+ oneway onHs20IconQueryDone(MacAddress macAddress,
+ string fileName,
+ vec<uint8_t> data);
+
+ /**
+ * Used to indicate a Hotspot 2.0 subscription remediation event.
+ *
+ * @param osuMethod OSU method.
+ * @param url URL of the server.
+ */
+ oneway onHs20SubscriptionRemediation(OsuMethod osuMethod, string url);
+
+ /**
+ * Used to indicate a Hotspot 2.0 imminent deauth notice.
+ * @param code Code to indicate the deauth reason.
+ * Refer to section 3.2.1.2 of the Hotspot 2.0 spec.
+ * @param reAuthDelayInSec Delay before reauthenticating.
+ * @param url URL of the server.
+ */
+ oneway onHs20DeauthImminentNotice(uint32_t code,
+ uint32_t reAuthDelayInSec,
+ string url);
};