1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright 2020 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerimport @1.0::ISupplicantStaIfaceCallback.AnqpData; 20*4d7e907cSAndroid Build Coastguard Workerimport @1.0::ISupplicantStaIfaceCallback.Hs20AnqpData; 21*4d7e907cSAndroid Build Coastguard Workerimport @1.3::ISupplicantStaIfaceCallback; 22*4d7e907cSAndroid Build Coastguard Workerimport @1.0::ISupplicantStaIfaceCallback.State; 23*4d7e907cSAndroid Build Coastguard Workerimport @1.0::ISupplicantStaIfaceCallback.StatusCode; 24*4d7e907cSAndroid Build Coastguard Workerimport @1.0::Bssid; 25*4d7e907cSAndroid Build Coastguard Workerimport @1.0::Ssid; 26*4d7e907cSAndroid Build Coastguard Worker 27*4d7e907cSAndroid Build Coastguard Worker/** 28*4d7e907cSAndroid Build Coastguard Worker * Callback Interface exposed by the supplicant service 29*4d7e907cSAndroid Build Coastguard Worker * for each station mode interface (ISupplicantStaIface). 30*4d7e907cSAndroid Build Coastguard Worker * 31*4d7e907cSAndroid Build Coastguard Worker * Clients need to host an instance of this HIDL interface object and 32*4d7e907cSAndroid Build Coastguard Worker * pass a reference of the object to the supplicant via the 33*4d7e907cSAndroid Build Coastguard Worker * corresponding |ISupplicantStaIface.registerCallback_1_4| method. 34*4d7e907cSAndroid Build Coastguard Worker */ 35*4d7e907cSAndroid Build Coastguard Workerinterface ISupplicantStaIfaceCallback extends @1.3::ISupplicantStaIfaceCallback { 36*4d7e907cSAndroid Build Coastguard Worker /** 37*4d7e907cSAndroid Build Coastguard Worker * MBO spec v1.2, 4.2.4 Table 14: MBO Association disallowed reason code attribute 38*4d7e907cSAndroid Build Coastguard Worker * values. 39*4d7e907cSAndroid Build Coastguard Worker */ 40*4d7e907cSAndroid Build Coastguard Worker enum MboAssocDisallowedReasonCode : uint8_t { 41*4d7e907cSAndroid Build Coastguard Worker RESERVED = 0, 42*4d7e907cSAndroid Build Coastguard Worker UNSPECIFIED = 1, 43*4d7e907cSAndroid Build Coastguard Worker MAX_NUM_STA_ASSOCIATED = 2, 44*4d7e907cSAndroid Build Coastguard Worker AIR_INTERFACE_OVERLOADED = 3, 45*4d7e907cSAndroid Build Coastguard Worker AUTH_SERVER_OVERLOADED = 4, 46*4d7e907cSAndroid Build Coastguard Worker INSUFFICIENT_RSSI = 5, 47*4d7e907cSAndroid Build Coastguard Worker }; 48*4d7e907cSAndroid Build Coastguard Worker 49*4d7e907cSAndroid Build Coastguard Worker /** 50*4d7e907cSAndroid Build Coastguard Worker * ANQP data for IEEE Std 802.11-2016. 51*4d7e907cSAndroid Build Coastguard Worker * The format of the data within these elements follows the IEEE 52*4d7e907cSAndroid Build Coastguard Worker * Std 802.11-2016 standard, section 9.4.5. 53*4d7e907cSAndroid Build Coastguard Worker */ 54*4d7e907cSAndroid Build Coastguard Worker struct AnqpData { 55*4d7e907cSAndroid Build Coastguard Worker /** 56*4d7e907cSAndroid Build Coastguard Worker * Baseline information as defined in HAL 1.0. 57*4d7e907cSAndroid Build Coastguard Worker */ 58*4d7e907cSAndroid Build Coastguard Worker @1.0::ISupplicantStaIfaceCallback.AnqpData V1_0; 59*4d7e907cSAndroid Build Coastguard Worker 60*4d7e907cSAndroid Build Coastguard Worker /* 61*4d7e907cSAndroid Build Coastguard Worker * Container for v1.0 of this struct 62*4d7e907cSAndroid Build Coastguard Worker */ 63*4d7e907cSAndroid Build Coastguard Worker vec<uint8_t> venueUrl; 64*4d7e907cSAndroid Build Coastguard Worker }; 65*4d7e907cSAndroid Build Coastguard Worker 66*4d7e907cSAndroid Build Coastguard Worker /** 67*4d7e907cSAndroid Build Coastguard Worker * OceRssiBasedAssocRejectAttr is extracted from (Re-)Association response 68*4d7e907cSAndroid Build Coastguard Worker * frame from an OCE AP to indicate that the AP has rejected the 69*4d7e907cSAndroid Build Coastguard Worker * (Re-)Association request on the basis of insufficient RSSI. 70*4d7e907cSAndroid Build Coastguard Worker * Refer OCE spec v1.0 section 4.2.2 Table 7. 71*4d7e907cSAndroid Build Coastguard Worker */ 72*4d7e907cSAndroid Build Coastguard Worker struct OceRssiBasedAssocRejectAttr { 73*4d7e907cSAndroid Build Coastguard Worker /* 74*4d7e907cSAndroid Build Coastguard Worker * Delta RSSI - The difference in dB between the minimum RSSI at which 75*4d7e907cSAndroid Build Coastguard Worker * the AP would accept a (Re-)Association request from the STA before 76*4d7e907cSAndroid Build Coastguard Worker * Retry Delay expires and the AP's measurement of the RSSI at which the 77*4d7e907cSAndroid Build Coastguard Worker * (Re-)Association request was received. 78*4d7e907cSAndroid Build Coastguard Worker */ 79*4d7e907cSAndroid Build Coastguard Worker uint32_t deltaRssi; 80*4d7e907cSAndroid Build Coastguard Worker 81*4d7e907cSAndroid Build Coastguard Worker /* 82*4d7e907cSAndroid Build Coastguard Worker * Retry Delay - The time period in seconds for which the AP will not 83*4d7e907cSAndroid Build Coastguard Worker * accept any subsequent (Re-)Association requests from the STA, unless 84*4d7e907cSAndroid Build Coastguard Worker * the received RSSI has improved by Delta RSSI. 85*4d7e907cSAndroid Build Coastguard Worker */ 86*4d7e907cSAndroid Build Coastguard Worker uint32_t retryDelayS; 87*4d7e907cSAndroid Build Coastguard Worker }; 88*4d7e907cSAndroid Build Coastguard Worker 89*4d7e907cSAndroid Build Coastguard Worker /** 90*4d7e907cSAndroid Build Coastguard Worker * Association Rejection related information. 91*4d7e907cSAndroid Build Coastguard Worker */ 92*4d7e907cSAndroid Build Coastguard Worker struct AssociationRejectionData { 93*4d7e907cSAndroid Build Coastguard Worker /** 94*4d7e907cSAndroid Build Coastguard Worker * SSID of the AP that rejected the association. 95*4d7e907cSAndroid Build Coastguard Worker */ 96*4d7e907cSAndroid Build Coastguard Worker Ssid ssid; 97*4d7e907cSAndroid Build Coastguard Worker 98*4d7e907cSAndroid Build Coastguard Worker /** 99*4d7e907cSAndroid Build Coastguard Worker * BSSID of the AP that rejected the association. 100*4d7e907cSAndroid Build Coastguard Worker */ 101*4d7e907cSAndroid Build Coastguard Worker Bssid bssid; 102*4d7e907cSAndroid Build Coastguard Worker 103*4d7e907cSAndroid Build Coastguard Worker /* 104*4d7e907cSAndroid Build Coastguard Worker * 802.11 code to indicate the reject reason. 105*4d7e907cSAndroid Build Coastguard Worker * Refer to section 8.4.1.9 of IEEE 802.11 spec. 106*4d7e907cSAndroid Build Coastguard Worker */ 107*4d7e907cSAndroid Build Coastguard Worker StatusCode statusCode; 108*4d7e907cSAndroid Build Coastguard Worker 109*4d7e907cSAndroid Build Coastguard Worker /* 110*4d7e907cSAndroid Build Coastguard Worker * Flag to indicate that failure is due to timeout rather than 111*4d7e907cSAndroid Build Coastguard Worker * explicit rejection response from the AP. 112*4d7e907cSAndroid Build Coastguard Worker */ 113*4d7e907cSAndroid Build Coastguard Worker bool timedOut; 114*4d7e907cSAndroid Build Coastguard Worker 115*4d7e907cSAndroid Build Coastguard Worker /** 116*4d7e907cSAndroid Build Coastguard Worker * Flag to indicate that MboAssocDisallowedReasonCode is present 117*4d7e907cSAndroid Build Coastguard Worker * in the (Re-)Association response frame. 118*4d7e907cSAndroid Build Coastguard Worker */ 119*4d7e907cSAndroid Build Coastguard Worker bool isMboAssocDisallowedReasonCodePresent; 120*4d7e907cSAndroid Build Coastguard Worker 121*4d7e907cSAndroid Build Coastguard Worker /** 122*4d7e907cSAndroid Build Coastguard Worker * mboAssocDisallowedReason is extracted from MBO association disallowed attribute 123*4d7e907cSAndroid Build Coastguard Worker * in (Re-)Association response frame to indicate that the AP is not accepting new 124*4d7e907cSAndroid Build Coastguard Worker * associations. 125*4d7e907cSAndroid Build Coastguard Worker * Refer MBO spec v1.2 section 4.2.4 Table 13 for the details of reason code. 126*4d7e907cSAndroid Build Coastguard Worker * The value is undefined if isMboAssocDisallowedReasonCodePresent is false. 127*4d7e907cSAndroid Build Coastguard Worker */ 128*4d7e907cSAndroid Build Coastguard Worker MboAssocDisallowedReasonCode mboAssocDisallowedReason; 129*4d7e907cSAndroid Build Coastguard Worker 130*4d7e907cSAndroid Build Coastguard Worker /** 131*4d7e907cSAndroid Build Coastguard Worker * Flag to indicate that OceRssiBasedAssocRejectAttr is present 132*4d7e907cSAndroid Build Coastguard Worker * in the (Re-)Association response frame. 133*4d7e907cSAndroid Build Coastguard Worker */ 134*4d7e907cSAndroid Build Coastguard Worker bool isOceRssiBasedAssocRejectAttrPresent; 135*4d7e907cSAndroid Build Coastguard Worker 136*4d7e907cSAndroid Build Coastguard Worker /* 137*4d7e907cSAndroid Build Coastguard Worker * OCE RSSI-based (Re-)Association rejection attribute. 138*4d7e907cSAndroid Build Coastguard Worker * The contents are undefined if isOceRssiBasedAssocRejectAttrPresent is false. 139*4d7e907cSAndroid Build Coastguard Worker */ 140*4d7e907cSAndroid Build Coastguard Worker OceRssiBasedAssocRejectAttr oceRssiBasedAssocRejectData; 141*4d7e907cSAndroid Build Coastguard Worker }; 142*4d7e907cSAndroid Build Coastguard Worker 143*4d7e907cSAndroid Build Coastguard Worker /** 144*4d7e907cSAndroid Build Coastguard Worker * Used to indicate a Hotspot 2.0 terms and conditions acceptance is requested from the user 145*4d7e907cSAndroid Build Coastguard Worker * before allowing the device to get internet access. 146*4d7e907cSAndroid Build Coastguard Worker * 147*4d7e907cSAndroid Build Coastguard Worker * @param bssid BSSID of the access point. 148*4d7e907cSAndroid Build Coastguard Worker * @param url URL of the T&C server. 149*4d7e907cSAndroid Build Coastguard Worker */ 150*4d7e907cSAndroid Build Coastguard Worker oneway onHs20TermsAndConditionsAcceptanceRequestedNotification(Bssid bssid, string url); 151*4d7e907cSAndroid Build Coastguard Worker 152*4d7e907cSAndroid Build Coastguard Worker /** 153*4d7e907cSAndroid Build Coastguard Worker * Used to indicate the result of ANQP (either for IEEE 802.11u Interworking 154*4d7e907cSAndroid Build Coastguard Worker * or Hotspot 2.0) query. 155*4d7e907cSAndroid Build Coastguard Worker * 156*4d7e907cSAndroid Build Coastguard Worker * @param bssid BSSID of the access point. 157*4d7e907cSAndroid Build Coastguard Worker * @param data ANQP data fetched from the access point. 158*4d7e907cSAndroid Build Coastguard Worker * All the fields in this struct must be empty if the query failed. 159*4d7e907cSAndroid Build Coastguard Worker * @param hs20Data ANQP data fetched from the Hotspot 2.0 access point. 160*4d7e907cSAndroid Build Coastguard Worker * All the fields in this struct must be empty if the query failed. 161*4d7e907cSAndroid Build Coastguard Worker */ 162*4d7e907cSAndroid Build Coastguard Worker oneway onAnqpQueryDone_1_4(Bssid bssid, AnqpData data, Hs20AnqpData hs20Data); 163*4d7e907cSAndroid Build Coastguard Worker 164*4d7e907cSAndroid Build Coastguard Worker /** 165*4d7e907cSAndroid Build Coastguard Worker * Used to indicate an association rejection received from the AP 166*4d7e907cSAndroid Build Coastguard Worker * to which the connection is being attempted. 167*4d7e907cSAndroid Build Coastguard Worker * 168*4d7e907cSAndroid Build Coastguard Worker * @param assocRejectData Association Rejection related information. 169*4d7e907cSAndroid Build Coastguard Worker */ 170*4d7e907cSAndroid Build Coastguard Worker oneway onAssociationRejected_1_4(AssociationRejectionData assocRejectData); 171*4d7e907cSAndroid Build Coastguard Worker 172*4d7e907cSAndroid Build Coastguard Worker /** 173*4d7e907cSAndroid Build Coastguard Worker * Used to indicate that the supplicant failed to find a network in scan result 174*4d7e907cSAndroid Build Coastguard Worker * which matches with the network capabilities requested by upper layer 175*4d7e907cSAndroid Build Coastguard Worker * for connection. 176*4d7e907cSAndroid Build Coastguard Worker * 177*4d7e907cSAndroid Build Coastguard Worker * @param ssid network name supplicant tried to connect. 178*4d7e907cSAndroid Build Coastguard Worker */ 179*4d7e907cSAndroid Build Coastguard Worker oneway onNetworkNotFound(Ssid ssid); 180*4d7e907cSAndroid Build Coastguard Worker}; 181