blob: c5da29c174667a28a2ea4c5dfbe92caa361f9b82 [file] [log] [blame]
/*
* 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<BssTmDataFlagsMask> 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<uint8_t> 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<uint16_t> 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);
};