blob: c5da29c174667a28a2ea4c5dfbe92caa361f9b82 [file] [log] [blame]
Jimmy Chen1eb82362019-08-28 17:54:29 +08001/*
2 * Copyright 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.wifi.supplicant@1.3;
18
19import @1.2::ISupplicantStaIfaceCallback;
Vamsi Krishna2f829232019-12-05 19:18:50 +053020import @1.0::ISupplicantStaIfaceCallback.State;
21import @1.0::Bssid;
22import @1.0::SupplicantNetworkId;
23import @1.0::Ssid;
Jimmy Chen1eb82362019-08-28 17:54:29 +080024
25/**
26 * Callback Interface exposed by the supplicant service
27 * for each station mode interface (ISupplicantStaIface).
28 *
29 * Clients need to host an instance of this HIDL interface object and
30 * pass a reference of the object to the supplicant via the
31 * corresponding |ISupplicantStaIface.registerCallback_1_3| method.
32 */
33interface ISupplicantStaIfaceCallback extends @1.2::ISupplicantStaIfaceCallback {
34 /**
Sunil Ravic6489a52019-12-06 18:03:24 -080035 * IEEE Std 802.11-2016 - Table 9-357.
36 * BTM status code filled in BSS transition management response frame.
37 */
38 enum BssTmStatusCode : uint8_t {
39 ACCEPT = 0,
40 REJECT_UNSPECIFIED = 1,
41 REJECT_INSUFFICIENT_BEACON = 2,
42 REJECT_INSUFFICIENT_CAPABITY = 3,
43 REJECT_BSS_TERMINATION_UNDESIRED = 4,
44 REJECT_BSS_TERMINATION_DELAY_REQUEST = 5,
45 REJECT_STA_CANDIDATE_LIST_PROVIDED = 6,
46 REJECT_NO_SUITABLE_CANDIDATES = 7,
47 REJECT_LEAVING_ESS = 8,
48 };
49
50 /**
51 * Bitmask of various information retrieved from BSS transition management request frame.
52 */
53 enum BssTmDataFlagsMask : uint32_t {
54 /**
55 * Preferred candidate list included.
56 */
57 WNM_MODE_PREFERRED_CANDIDATE_LIST_INCLUDED = 1 << 0,
58 /**
59 * Abridged.
60 */
61 WNM_MODE_ABRIDGED = 1 << 1,
62 /**
63 * Disassociation Imminent.
64 */
65 WNM_MODE_DISASSOCIATION_IMMINENT = 1 << 2,
66 /**
67 * BSS termination included.
68 */
69 WNM_MODE_BSS_TERMINATION_INCLUDED = 1 << 3,
70 /**
71 * ESS Disassociation Imminent.
72 */
73 WNM_MODE_ESS_DISASSOCIATION_IMMINENT = 1 << 4,
74 /**
75 * MBO transition reason code included.
76 */
77 MBO_TRANSITION_REASON_CODE_INCLUDED = 1 << 5,
78 /**
79 * MBO retry delay time included.
80 */
81 MBO_ASSOC_RETRY_DELAY_INCLUDED = 1 << 6,
82 /**
83 * MBO cellular data connection preference value included.
84 */
85 MBO_CELLULAR_DATA_CONNECTION_PREFERENCE_INCLUDED = 1 << 7,
86 };
87
88 /**
89 * MBO spec v1.2, 4.2.6 Table 18: MBO transition reason code attribute
90 * values.
91 */
92 enum MboTransitionReasonCode : uint8_t {
93 UNSPECIFIED = 0,
94 EXCESSIVE_FRAME_LOSS = 1,
95 EXCESSIVE_TRAFFIC_DELAY = 2,
96 INSUFFICIENT_BANDWIDTH = 3,
97 LOAD_BALANCING = 4,
98 LOW_RSSI = 5,
99 RX_EXCESSIVE_RETRIES = 6,
100 HIGH_INTERFERENCE = 7,
101 GRAY_ZONE = 8,
102 TRANSITION_TO_PREMIUM_AP = 9,
103 };
104
105 /**
106 * MBO spec v1.2, 4.2.5 Table 16: MBO Cellular Data connection preference
107 * attribute values. AP use this to indicate STA, its preference for the
108 * STA to move from BSS to cellular network.
109 */
110 enum MboCellularDataConnectionPrefValue : uint8_t {
111 EXCLUDED = 0,
112 NOT_PREFERRED = 1,
113 /*
114 * 2-254 Reserved.
115 */
116 PREFERRED = 255,
117 };
118
119 /**
120 * Data retrieved from received BSS transition management request frame.
121 */
122 struct BssTmData {
123 /*
124 * Status code filled in BSS transition management response frame
125 */
126 BssTmStatusCode status;
127
128 /*
129 * Bitmask of BssTmDataFlagsMask
130 */
131 bitfield<BssTmDataFlagsMask> flags;
132
133 /*
134 * Duration for which STA shouldn't try to re-associate.
135 */
136 uint32_t assocRetryDelayMs;
137
138 /*
139 * Reason for BSS transition request.
140 */
141 MboTransitionReasonCode mboTransitionReason;
142
143 /*
144 * Cellular Data Connection preference value.
145 */
146 MboCellularDataConnectionPrefValue mboCellPreference;
147 };
148
149 /**
Sunil Ravic8c00642020-02-08 18:45:20 -0800150 * Indicates pairwise master key (PMK) cache added event.
Jimmy Chen1eb82362019-08-28 17:54:29 +0800151 *
152 * @param expirationTimeInSec expiration time in seconds
153 * @param serializedEntry is serialized PMK cache entry, the content is
154 * opaque for the framework and depends on the native implementation.
155 */
156 oneway onPmkCacheAdded(int64_t expirationTimeInSec, vec<uint8_t> serializedEntry);
Hai Shalom36768042019-12-04 15:50:57 -0800157
158 /**
159 * Indicates a DPP success event.
160 */
161 oneway onDppSuccess(DppSuccessCode code);
162
163 /**
164 * Indicates a DPP progress event.
165 */
166 oneway onDppProgress_1_3(DppProgressCode code);
167
168 /**
169 * Indicates a DPP failure event.
170 *
171 * ssid: A string indicating the SSID for the AP that the Enrollee attempted to connect.
172 * channelList: A string containing a list of operating channels and operating classes
173 * indicating the channels that the Enrollee scanned in attempting to discover the AP.
174 * The list conforms to the following ABNF syntax:
175 * channel-list2 = class-and-channels *(“,” class-and-channels)
176 * class-and-channels = class “/” channel *(“,” channel)
177 * class = 1*3DIGIT
178 * channel = 1*3DIGIT
179 * bandList: A list of band parameters that are supported by the Enrollee expressed as the
180 * Operating Class.
181 */
182 oneway onDppFailure_1_3(DppFailureCode code, string ssid, string channelList,
Sunil Ravic6489a52019-12-06 18:03:24 -0800183 vec<uint16_t> bandList);
184
185 /**
186 * Indicates BTM request frame handling status.
187 *
188 * @param BssTmData Data retrieved from received BSS transition management
189 * request frame.
190 */
191 oneway onBssTmHandlingDone(BssTmData tmData);
Isaac Chiou0f977642019-12-30 14:57:15 +0800192
193 /**
194 * Indicates an EAP authentication failure.
Sunil Ravic8c00642020-02-08 18:45:20 -0800195 * @param errorCode Error code for EAP authentication failure.
196 * Either standard error code (enum EapErrorCode) or
197 * private error code defined by network provider.
Isaac Chiou0f977642019-12-30 14:57:15 +0800198 */
199 oneway onEapFailure_1_3(uint32_t errorCode);
Vamsi Krishna2f829232019-12-05 19:18:50 +0530200
201 /**
202 * Used to indicate a state change event on this particular iface. If this
203 * event is triggered by a particular network, the |SupplicantNetworkId|,
204 * |ssid|, |bssid| parameters must indicate the parameters of the network/AP
205 * which caused this state transition.
206 *
207 * @param newState New State of the interface. This must be one of the |State|
208 * values above.
209 * @param bssid BSSID of the corresponding AP which caused this state
210 * change event. This must be zero'ed if this event is not
211 * specific to a particular network.
212 * @param id ID of the corresponding network which caused this
213 * state change event. This must be invalid (UINT32_MAX) if this
214 * event is not specific to a particular network.
215 * @param ssid SSID of the corresponding network which caused this state
216 * change event. This must be empty if this event is not specific
217 * to a particular network.
218 * @param filsHlpSent If FILS HLP IEs were included in this association.
219 */
220 oneway onStateChanged_1_3(State newState, Bssid bssid, SupplicantNetworkId id, Ssid ssid,
221 bool filsHlpSent);
Jimmy Chen1eb82362019-08-28 17:54:29 +0800222};