wpa_supplicant(interface): Add iface/network type

Add separate types of Iface/Network object for STA (station mode) and
P2P mode ifaces and associated networks. These expose very different
functionality and exposing 2 different types of objects makes the
interface cleaner.
Although, they're still represented via the same struct for both types
in the wpa_supplicant core.

Bug: 32553421
Test: ./hardware/interfaces/update-makefiles.sh
Change-Id: I41601a650709429c65014cb7adaf6cb9ab03787e
diff --git a/wifi/supplicant/1.0/ISupplicantNetwork.hal b/wifi/supplicant/1.0/ISupplicantNetwork.hal
index fce3c5d..acc3359 100644
--- a/wifi/supplicant/1.0/ISupplicantNetwork.hal
+++ b/wifi/supplicant/1.0/ISupplicantNetwork.hal
@@ -16,8 +16,6 @@
 
 package android.hardware.wifi.supplicant@1.0;
 
-import ISupplicantNetworkCallback;
-
 /**
  * Interface exposed by wpa_supplicant for each network configuration it
  * controls.
@@ -28,100 +26,6 @@
  */
 interface ISupplicantNetwork {
   /**
-   * Size limits for some of the params used in this interface.
-   */
-  enum ParamSizeLimits : uint32_t {
-    /** Max length of SSID param. */
-    SSID_MAX_LEN_IN_BYTES = 32,
-
-    /** Min length of PSK passphrase param. */
-    PSK_PASSPHRASE_MIN_LEN_IN_BYTES = 8,
-
-    /** Max length of PSK passphrase param. */
-    PSK_PASSPHRASE_MAX_LEN_IN_BYTES = 63,
-
-    /** Max number of WEP keys param. */
-    WEP_KEYS_MAX_NUM = 4,
-
-    /** Length of each WEP40 keys param. */
-    WEP40_KEY_LEN_IN_BYTES = 5,
-    /** Length of each WEP104 keys param. */
-    WEP104_KEY_LEN_IN_BYTES = 13,
-  };
-
-  /** Possble mask of values for KeyMgmt param. */
-  enum KeyMgmtMask : uint32_t {
-    WPA_EAP = 1 << 0,
-    WPA_PSK = 1 << 1,
-    NONE = 1 << 2,
-    IEEE8021X = 1 << 3
-  };
-
-  /** Possble mask of values for Proto param. */
-  enum ProtoMask : uint32_t {
-    WPA = 1 << 0,
-    RSN = 1 << 1,
-    /** Unused 1 << 2 */
-    OSEN = 1 << 3
-  };
-
-  /** Possble mask of values for AuthAlg param. */
-  enum AuthAlgMask : uint32_t {
-    OPEN = 1 << 0,
-    SHARED = 1 << 1,
-    LEAP = 1 << 2
-  };
-
-  /** Possble mask of values for GroupCipher param. */
-  enum GroupCipherMask : uint32_t {
-    WEP40 = 1 << 1,
-    WEP104 = 1 << 2,
-    TKIP = 1 << 3,
-    CCMP = 1 << 4
-  };
-
-  /** Possble mask of values for PairwiseCipher param. */
-  enum PairwiseCipherMask : uint32_t {
-    NONE = 1 << 0,
-    TKIP = 1 << 3,
-    CCMP = 1 << 4
-  };
-
-  /** Possble values for EapMethod param. */
-  enum EapMethod : uint32_t {
-    PEAP = 0,
-    TLS = 1,
-    TTLS = 2,
-    PWD = 3,
-    SIM = 4,
-    AKA = 5,
-    AKA_PRIME = 6,
-    WFA_UNAUTH_TLS = 7
-  };
-
-  /** Possble values for Phase2Method param. */
-  enum EapPhase2Method : uint32_t {
-    NONE = 0,
-    PAP = 1,
-    MSPAP = 2,
-    MSPAPV2 = 3,
-    GTC = 4
-  };
-
-  /** Params of |sendNetworkEapSimGsmAuthResponse| request. (Refer RFC 4186) */
-  struct NetworkResponseEapSimGsmAuthParams {
-    uint8_t[8] kc;
-    uint8_t[4] sres;
-  };
-
-  /** Params of |sendNetworkEapSimUmtsAuthResponse| request. (Refer RFC 4187) */
-  struct NetworkResponseEapSimUmtsAuthParams {
-    vec<uint8_t> res;
-    uint8_t[16] ik;
-    uint8_t[16] ck;
-  };
-
-  /**
    * Retrieves the ID allocated to this network by wpa_supplicant.
    *
    * This is not the |SSID| of the network, but an internal identifier for
@@ -147,593 +51,13 @@
   getInterfaceName() generates (SupplicantStatus status, string name);
 
   /**
-   * Register for callbacks from this network.
-   *
-   * These callbacks are invoked for events that are specific to this network.
-   * Registration of multiple callback objects is supported. These objects must
-   * be automatically deleted when the corresponding client process is dead or
-   * if this network is removed.
-   *
-   * @param callback An instance of the |ISupplicantNetworkCallback| HIDL
-   *        interface object.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  registerCallback(ISupplicantNetworkCallback callback)
-      generates (SupplicantStatus status);
-
-  /**
-   * Setters for the various network params.
-   * These correspond to elements of |wpa_sssid| struct used internally by
-   * wpa_supplicant to represent each network.
-   */
-  /**
-   * Set SSID for this network.
-   *
-   * @param ssid value to set.
-   *        Max length of |ParamSizeLimits.SSID_MAX_LEN_IN_BYTES|.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setSsid(Ssid ssid) generates (SupplicantStatus status);
-
-  /**
-   * Set the network to only connect to an AP with provided BSSID.
-   *
-   * @param bssid value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setBssid(Bssid bssid) generates (SupplicantStatus status);
-
-  /**
-   * Set whether to send probe requests for this network (hidden).
-   *
-   * @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|
-   */
-  setScanSsid(bool enable) generates (SupplicantStatus status);
-
-  /**
-   * Set key management mask for the network.
-   *
-   * @param keyMgmtMask value to set.
-   *        Combination of |KeyMgmtMask| values.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setKeyMgmt(uint32_t keyMgmtMask) generates (SupplicantStatus status);
-
-  /**
-   * Set proto mask for the network.
-   *
-   * @param protoMask value to set.
-   *        Combination of |ProtoMask| values.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setProto(uint32_t protoMask) generates (SupplicantStatus status);
-
-  /**
-   * Set auth alg mask for the network.
-   *
-   * @param authAlgMask value to set.
-   *        Combination of |ProtoMask| values.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setAuthAlg(uint32_t authAlgMask) generates (SupplicantStatus status);
-
-  /**
-   * Set group cipher mask for the network.
-   *
-   * @param groupCipherMask value to set.
-   *        Combination of |ProtoMask| values.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setGroupCipher(uint32_t groupCipherMask)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set pairwise cipher mask for the network.
-   *
-   * @param pairwiseCipherMask value to set.
-   *        Combination of |ProtoMask| values.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setPairwiseCipher(uint32_t pairwiseCipherMask)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set passphrase for WPA_PSK network.
-   *
-   * @param psk value to set.
-   *        Length of value must be between
-   *        |ParamSizeLimits.PSK_PASSPHRASE_MIN_LEN_IN_BYTES| and
-   *        |ParamSizeLimits.PSK_PASSPHRASE_MAX_LEN_IN_BYTES|.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setPskPassphrase(string psk) generates (SupplicantStatus status);
-
-  /**
-   * Set WEP key for WEP network.
-   *
-   * @param keyIdx Index of wep key to set.
-   *        Max of |ParamSizeLimits.WEP_KEYS_MAX_NUM|.
-   * @param wepKey value to set.
-   *        Length of each key must be either
-   *        |ParamSizeLimits.WEP40_KEY_LEN_IN_BYTES| or
-   *        |ParamSizeLimits.WEP104_KEY_LEN_IN_BYTES|.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setWepKey(uint32_t keyIdx, vec<uint8_t> wepKey)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set default Tx key index for WEP network.
-   *
-   * @param KeyIdx value to set.
-   *        Max of |ParamSizeLimits.WEP_KEYS_MAX_NUM|.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setWepTxKeyIdx(uint32_t keyIdx)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set whether RequirePmf is enabled for this network.
-   *
-   * @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|
-   */
-  setRequirePmf(bool enable) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Method for this network.
-   *
-   * @param method value to be set.
-   *        Must be one of |EapMethod| values.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapMethod(EapMethod method)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Phase2 Method for this network.
-   *
-   * @param method value to set.
-   *        Must be one of |EapPhase2Method| values.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapPhase2Method(EapPhase2Method method)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Identity for this network.
-   *
-   * @param identity value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapIdentity(vec<uint8_t> identity)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Anonymous Identity for this network.
-   *
-   * @param identity value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapAnonymousIdentity(vec<uint8_t> identity)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Password for this network.
-   *
-   * @param password value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapPassword(vec<uint8_t> password)
-      generates (SupplicantStatus status);
-
-  /**
-   * Set EAP CA certificate file path for this network.
-   *
-   * @param path value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapCACert(string path) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP CA certificate directory path for this network.
-   *
-   * @param path value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapCAPath(string path) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Client certificate file path for this network.
-   *
-   * @param path value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapClientCert(string path) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP private key file path for this network.
-   *
-   * @param path value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapPrivateKey(string path) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP subject match for this network.
-   *
-   * @param match value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapSubjectMatch(string match) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Altsubject match for this network.
-   *
-   * @param match value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapAltSubjectMatch(string match)
-      generates (SupplicantStatus status);
-
-  /**
-   * Enable EAP Open SSL Engine for this network.
-   *
-   * @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|
-   */
-  setEapEngine(bool enable) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Open SSL Engine ID for this network.
-   *
-   * @param id value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapEngineID(string id) generates (SupplicantStatus status);
-
-  /**
-   * Set EAP Domain suffix match for this network.
-   *
-   * @param match value to set.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  setEapDomainSuffixMatch(string match)
-      generates (SupplicantStatus status);
-
-  /**
-   * Getters for the various network params.
-   */
-  /**
-   * Get SSID for this network.
+   * Retrieves the type of the interface this network belongs to.
    *
    * @return status Status of the operation.
    *         Possible status codes:
    *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return ssid value set.
+   *         |SupplicantStatusCode.FAILURE_IFACE_INVALID|
+   * @return type Type of the network interface, e.g., STA.
    */
-  getSsid() generates (SupplicantStatus status, Ssid ssid);
-
-  /**
-   * Get the BSSID set for this network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return bssid value set.
-   */
-  getBssid() generates (SupplicantStatus status, Bssid bssid);
-
-  /**
-   * Get whether Probe Requests are being sent for this network (hidden).
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return enabled true if set, false otherwise.
-   */
-  getScanSsid() generates (SupplicantStatus status, bool enabled);
-
-  /**
-   * Get the key mgmt mask set for the network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return keyMgmtMask Combination of |KeyMgmtMask| values.
-   */
-  getKeyMgmt()
-      generates (SupplicantStatus status, uint32_t keyMgmtMask);
-
-  /**
-   * Get the proto mask set for the network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return protoMask Combination of |ProtoMask| values.
-   */
-  getProto() generates (SupplicantStatus status, uint32_t protoMask);
-
-  /**
-   * Get the auth alg mask set for the network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return authAlgMask Combination of |AuthAlgMask| values.
-   */
-  getAuthAlg()
-      generates (SupplicantStatus status, uint32_t authAlgMask);
-
-  /**
-   * Get the group cipher mask set for the network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return groupCipherMask Combination of |GroupCipherMask| values.
-   */
-  getGroupCipher()
-      generates (SupplicantStatus status, uint32_t groupCipherMask);
-
-  /**
-   * Get the pairwise cipher mask set for the network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return pairwiseCipherMask Combination of |PairwiseCipherMask| values.
-   */
-  getPairwiseCipher()
-      generates (SupplicantStatus status, uint32_t pairwiseCipherMask);
-
-  /**
-   * Get passphrase for WPA_PSK network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return psk value set.
-   */
-  getPskPassphrase() generates (SupplicantStatus status, string psk);
-
-  /**
-   * Get WEP key for WEP network.
-   *
-   * @param keyIdx Index of wep key to be fetched.
-   *        Max of |WEP_KEYS_MAX_NUM|.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return wepKey value set.
-   */
-  getWepKey(uint32_t keyIdx)
-      generates (SupplicantStatus status, vec<uint8_t> wepKey);
-
-  /**
-   * Get default Tx key index for WEP network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return keyIdx value set.
-   */
-  getWepTxKeyIdx()
-      generates (SupplicantStatus status, uint32_t keyIdx);
-
-  /**
-   * Get whether RequirePmf is enabled for this network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   * @return enabled true if set, false otherwise.
-   */
-  getRequirePmf() generates (SupplicantStatus status, bool enabled);
-
-  /**
-   * Enable the network for connection purposes.
-   *
-   * This must trigger a connection to the network if:
-   * a) |noConnect| is false, and
-   * b) This is the only network configured, and
-   * c) Is visible in the current scan results.
-   *
-   * @param noConnect Only enable the network, dont trigger a connect.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  enable(bool noConnect) generates (SupplicantStatus status);
-
-  /**
-   * Disable the network for connection purposes.
-   *
-   * This must trigger a disconnection from the network, if currently
-   * connected to this one.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  disable() generates (SupplicantStatus status);
-
-  /**
-   * Initiate connection to this network.
-   *
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  select() generates (SupplicantStatus status);
-
-  /**
-   * Used to send a response to the
-   * |ISupplicantNetworkCallback.onNetworkEapSimGsmAuthRequest| request.
-   *
-   * @param params Params to be used for EAP GSM authentication.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  sendNetworkEapSimGsmAuthResponse(NetworkResponseEapSimGsmAuthParams params)
-      generates (SupplicantStatus status);
-
-  /**
-   * Used to send a response to the
-   * |ISupplicantNetworkCallback.onNetworkEapSimUmtsAuthRequest| request.
-   *
-   * @param params 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|
-   */
-  sendNetworkEapSimUmtsAuthResponse(NetworkResponseEapSimUmtsAuthParams params)
-      generates (SupplicantStatus status);
-
-  /**
-   * Used to send a response to the
-   * |ISupplicantNetworkCallback.onNetworkEapIdentityRequest| request.
-   *
-   * @param identity Identity to be used for the network.
-   * @return status Status of the operation.
-   *         Possible status codes:
-   *         |SupplicantStatusCode.SUCCESS|,
-   *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
-   *         |SupplicantStatusCode.FAILURE_NETWORK_INVALID|
-   */
-  sendNetworkEapIdentityResponse(vec<uint8_t> identity)
-      generates (SupplicantStatus status);
+  getType() generates (SupplicantStatus status, IfaceType type);
 };