Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 06a3daad authored by Roshan Pius's avatar Roshan Pius Committed by Gerrit Code Review
Browse files

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

parents 72882f05 b76dbbef
Loading
Loading
Loading
Loading
+60 −0
Original line number Diff line number Diff line
@@ -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);
};
+79 −0
Original line number Diff line number Diff line
@@ -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);
};