/* * Copyright 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.wifi.supplicant@1.3; import @1.2::ISupplicantStaIfaceCallback; import @1.0::ISupplicantStaIfaceCallback.State; import @1.0::Bssid; import @1.0::SupplicantNetworkId; import @1.0::Ssid; /** * Callback Interface exposed by the supplicant service * for each station mode interface (ISupplicantStaIface). * * Clients need to host an instance of this HIDL interface object and * pass a reference of the object to the supplicant via the * corresponding |ISupplicantStaIface.registerCallback_1_3| method. */ interface ISupplicantStaIfaceCallback extends @1.2::ISupplicantStaIfaceCallback { /** * IEEE Std 802.11-2016 - Table 9-357. * BTM status code filled in BSS transition management response frame. */ enum BssTmStatusCode : uint8_t { ACCEPT = 0, REJECT_UNSPECIFIED = 1, REJECT_INSUFFICIENT_BEACON = 2, REJECT_INSUFFICIENT_CAPABITY = 3, REJECT_BSS_TERMINATION_UNDESIRED = 4, REJECT_BSS_TERMINATION_DELAY_REQUEST = 5, REJECT_STA_CANDIDATE_LIST_PROVIDED = 6, REJECT_NO_SUITABLE_CANDIDATES = 7, REJECT_LEAVING_ESS = 8, }; /** * Bitmask of various information retrieved from BSS transition management request frame. */ enum BssTmDataFlagsMask : uint32_t { /** * Preferred candidate list included. */ WNM_MODE_PREFERRED_CANDIDATE_LIST_INCLUDED = 1 << 0, /** * Abridged. */ WNM_MODE_ABRIDGED = 1 << 1, /** * Disassociation Imminent. */ WNM_MODE_DISASSOCIATION_IMMINENT = 1 << 2, /** * BSS termination included. */ WNM_MODE_BSS_TERMINATION_INCLUDED = 1 << 3, /** * ESS Disassociation Imminent. */ WNM_MODE_ESS_DISASSOCIATION_IMMINENT = 1 << 4, /** * MBO transition reason code included. */ MBO_TRANSITION_REASON_CODE_INCLUDED = 1 << 5, /** * MBO retry delay time included. */ MBO_ASSOC_RETRY_DELAY_INCLUDED = 1 << 6, /** * MBO cellular data connection preference value included. */ MBO_CELLULAR_DATA_CONNECTION_PREFERENCE_INCLUDED = 1 << 7, }; /** * MBO spec v1.2, 4.2.6 Table 18: MBO transition reason code attribute * values. */ enum MboTransitionReasonCode : uint8_t { UNSPECIFIED = 0, EXCESSIVE_FRAME_LOSS = 1, EXCESSIVE_TRAFFIC_DELAY = 2, INSUFFICIENT_BANDWIDTH = 3, LOAD_BALANCING = 4, LOW_RSSI = 5, RX_EXCESSIVE_RETRIES = 6, HIGH_INTERFERENCE = 7, GRAY_ZONE = 8, TRANSITION_TO_PREMIUM_AP = 9, }; /** * MBO spec v1.2, 4.2.5 Table 16: MBO Cellular Data connection preference * attribute values. AP use this to indicate STA, its preference for the * STA to move from BSS to cellular network. */ enum MboCellularDataConnectionPrefValue : uint8_t { EXCLUDED = 0, NOT_PREFERRED = 1, /* * 2-254 Reserved. */ PREFERRED = 255, }; /** * Data retrieved from received BSS transition management request frame. */ struct BssTmData { /* * Status code filled in BSS transition management response frame */ BssTmStatusCode status; /* * Bitmask of BssTmDataFlagsMask */ bitfield flags; /* * Duration for which STA shouldn't try to re-associate. */ uint32_t assocRetryDelayMs; /* * Reason for BSS transition request. */ MboTransitionReasonCode mboTransitionReason; /* * Cellular Data Connection preference value. */ MboCellularDataConnectionPrefValue mboCellPreference; }; /** * Indicates pairwise master key (PMK) cache added event. * * @param expirationTimeInSec expiration time in seconds * @param serializedEntry is serialized PMK cache entry, the content is * opaque for the framework and depends on the native implementation. */ oneway onPmkCacheAdded(int64_t expirationTimeInSec, vec serializedEntry); /** * Indicates a DPP success event. */ oneway onDppSuccess(DppSuccessCode code); /** * Indicates a DPP progress event. */ oneway onDppProgress_1_3(DppProgressCode code); /** * Indicates a DPP failure event. * * ssid: A string indicating the SSID for the AP that the Enrollee attempted to connect. * channelList: A string containing a list of operating channels and operating classes * indicating the channels that the Enrollee scanned in attempting to discover the AP. * The list conforms to the following ABNF syntax: * channel-list2 = class-and-channels *(“,” class-and-channels) * class-and-channels = class “/” channel *(“,” channel) * class = 1*3DIGIT * channel = 1*3DIGIT * bandList: A list of band parameters that are supported by the Enrollee expressed as the * Operating Class. */ oneway onDppFailure_1_3(DppFailureCode code, string ssid, string channelList, vec bandList); /** * Indicates BTM request frame handling status. * * @param BssTmData Data retrieved from received BSS transition management * request frame. */ oneway onBssTmHandlingDone(BssTmData tmData); /** * Indicates an EAP authentication failure. * @param errorCode Error code for EAP authentication failure. * Either standard error code (enum EapErrorCode) or * private error code defined by network provider. */ oneway onEapFailure_1_3(uint32_t errorCode); /** * Used to indicate a state change event on this particular iface. If this * event is triggered by a particular network, the |SupplicantNetworkId|, * |ssid|, |bssid| parameters must indicate the parameters of the network/AP * which caused this state transition. * * @param newState New State of the interface. This must be one of the |State| * values above. * @param bssid BSSID of the corresponding AP which caused this state * change event. This must be zero'ed if this event is not * specific to a particular network. * @param id ID of the corresponding network which caused this * state change event. This must be invalid (UINT32_MAX) if this * event is not specific to a particular network. * @param ssid SSID of the corresponding network which caused this state * change event. This must be empty if this event is not specific * to a particular network. * @param filsHlpSent If FILS HLP IEs were included in this association. */ oneway onStateChanged_1_3(State newState, Bssid bssid, SupplicantNetworkId id, Ssid ssid, bool filsHlpSent); };