Merge "supplicant(interface): Add support for Hotspot 2.0"

This commit is contained in:
Roshan Pius
2016-11-16 17:24:12 +00:00
committed by Gerrit Code Review
2 changed files with 139 additions and 0 deletions

View File

@@ -24,6 +24,30 @@ import ISupplicantStaIfaceCallback;
* interface (e.g wlan0) it controls.
*/
interface ISupplicantStaIface extends ISupplicantIface {
/**
* Access Network Query Protocol info ID elements
* for IEEE Std 802.11u-2011.
*/
enum AnqpInfoId : uint32_t {
VENUE_NAME = 258,
ROAMING_CONSORTIUM = 261,
IP_ADDR_TYPE_AVAILABILITY = 262,
NAI_REALM = 263,
ANQP_3GPP_CELLULAR_NETWORK = 264,
DOMAIN_NAME = 268
};
/**
* Access Network Query Protocol subtype elements
* for Hotspot 2.0.
*/
enum Hs20AnqpSubtypes : uint32_t {
OPERATOR_FRIENDLY_NAME = 2,
WAN_METRICS = 4,
CONNECTION_CAPABILITY = 5,
OSU_PROVIDERS_LIST = 8,
};
/**
* Register for callbacks from this interface.
*
@@ -133,4 +157,40 @@ interface ISupplicantStaIface extends ISupplicantIface {
*/
initiateTdlsTeardown(MacAddress macAddress)
generates (SupplicantStatus status);
/**
* Initiate ANQP (for IEEE 802.11u Interworking/Hotspot 2.0) queries with the
* specified access point.
* The ANQP data fetched must be returned in the
* |ISupplicantStaIfaceCallback.onAnqpQueryDone| callback.
*
* @param macAddress MAC address of the access point.
* @param infoElements List of information elements to query for.
* @param subtypes List of HS20 subtypes to query for.
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
initiateAnqpQuery(MacAddress macAddress,
vec<AnqpInfoId> infoElements,
vec<Hs20AnqpSubtypes> subTypes)
generates (SupplicantStatus status);
/**
* Initiate the Hotspot 2.0 icon query with the specified accesss point.
* The icon data fetched must be returned in the
* |ISupplicantStaIfaceCallback.onHs20IconQueryDone| callback.
*
* @param macAddress MAC address of the access point.
* @param fileName Name of the file to request from the access point.
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_IFACE_INVALID|
*/
initiateHs20IconQuery(MacAddress macAddress, string fileName)
generates (SupplicantStatus status);
};

View File

@@ -104,6 +104,40 @@ interface ISupplicantStaIfaceCallback {
COMPLETED = 9
};
/**
* 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.
*
@@ -138,4 +172,49 @@ interface ISupplicantStaIfaceCallback {
*/
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);
};