1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright 2019 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::IHostapd.EncryptionType; 20*4d7e907cSAndroid Build Coastguard Workerimport @1.0::IHostapd.NetworkParams; 21*4d7e907cSAndroid Build Coastguard Workerimport @1.1::IHostapd; 22*4d7e907cSAndroid Build Coastguard Workerimport HostapdStatus; 23*4d7e907cSAndroid Build Coastguard Workerimport MacAddress; 24*4d7e907cSAndroid Build Coastguard Workerimport Ieee80211ReasonCode; 25*4d7e907cSAndroid Build Coastguard Workerimport DebugLevel; 26*4d7e907cSAndroid Build Coastguard Worker 27*4d7e907cSAndroid Build Coastguard Worker/** 28*4d7e907cSAndroid Build Coastguard Worker * Top-level object for managing SoftAPs. 29*4d7e907cSAndroid Build Coastguard Worker */ 30*4d7e907cSAndroid Build Coastguard Workerinterface IHostapd extends @1.1::IHostapd { 31*4d7e907cSAndroid Build Coastguard Worker /** Possible Security types. */ 32*4d7e907cSAndroid Build Coastguard Worker enum EncryptionType : @1.0::IHostapd.EncryptionType { 33*4d7e907cSAndroid Build Coastguard Worker WPA3_SAE_TRANSITION, 34*4d7e907cSAndroid Build Coastguard Worker WPA3_SAE, 35*4d7e907cSAndroid Build Coastguard Worker }; 36*4d7e907cSAndroid Build Coastguard Worker 37*4d7e907cSAndroid Build Coastguard Worker /** 38*4d7e907cSAndroid Build Coastguard Worker * Band bitmMask to use for the SoftAp operations. 39*4d7e907cSAndroid Build Coastguard Worker * A combinatoin of these bits are used to identify the allowed bands 40*4d7e907cSAndroid Build Coastguard Worker * to start the softAp 41*4d7e907cSAndroid Build Coastguard Worker */ 42*4d7e907cSAndroid Build Coastguard Worker enum BandMask : uint32_t { 43*4d7e907cSAndroid Build Coastguard Worker /** 44*4d7e907cSAndroid Build Coastguard Worker * 2.4 GHz band. 45*4d7e907cSAndroid Build Coastguard Worker */ 46*4d7e907cSAndroid Build Coastguard Worker BAND_2_GHZ = 1 << 0, 47*4d7e907cSAndroid Build Coastguard Worker /** 48*4d7e907cSAndroid Build Coastguard Worker * 5 GHz band. 49*4d7e907cSAndroid Build Coastguard Worker */ 50*4d7e907cSAndroid Build Coastguard Worker BAND_5_GHZ = 1 << 1, 51*4d7e907cSAndroid Build Coastguard Worker /** 52*4d7e907cSAndroid Build Coastguard Worker * 6 GHz band. 53*4d7e907cSAndroid Build Coastguard Worker */ 54*4d7e907cSAndroid Build Coastguard Worker BAND_6_GHZ = 1 << 2, 55*4d7e907cSAndroid Build Coastguard Worker }; 56*4d7e907cSAndroid Build Coastguard Worker 57*4d7e907cSAndroid Build Coastguard Worker /** 58*4d7e907cSAndroid Build Coastguard Worker * Parameters to control the HW mode for the interface. 59*4d7e907cSAndroid Build Coastguard Worker */ 60*4d7e907cSAndroid Build Coastguard Worker struct HwModeParams { 61*4d7e907cSAndroid Build Coastguard Worker /** 62*4d7e907cSAndroid Build Coastguard Worker * Whether IEEE 802.11ax (HE) is enabled or not. 63*4d7e907cSAndroid Build Coastguard Worker * Note: hw_mode=a is used to specify that 5 GHz band or 6 GHz band is 64*4d7e907cSAndroid Build Coastguard Worker * used with HE. 65*4d7e907cSAndroid Build Coastguard Worker */ 66*4d7e907cSAndroid Build Coastguard Worker bool enable80211AX; 67*4d7e907cSAndroid Build Coastguard Worker 68*4d7e907cSAndroid Build Coastguard Worker /** 69*4d7e907cSAndroid Build Coastguard Worker * Whether 6GHz band enabled or not on softAp. 70*4d7e907cSAndroid Build Coastguard Worker * Note: hw_mode=a is used to specify that 5 GHz band or 6 GHz band is 71*4d7e907cSAndroid Build Coastguard Worker * used. 72*4d7e907cSAndroid Build Coastguard Worker */ 73*4d7e907cSAndroid Build Coastguard Worker bool enable6GhzBand; 74*4d7e907cSAndroid Build Coastguard Worker 75*4d7e907cSAndroid Build Coastguard Worker /** 76*4d7e907cSAndroid Build Coastguard Worker * Whether HE single user beamformer in enabled or not on softAp. 77*4d7e907cSAndroid Build Coastguard Worker * Note: this is only applicable if 802.11ax is supported for softAp 78*4d7e907cSAndroid Build Coastguard Worker */ 79*4d7e907cSAndroid Build Coastguard Worker bool enableHeSingleUserBeamformer; 80*4d7e907cSAndroid Build Coastguard Worker 81*4d7e907cSAndroid Build Coastguard Worker /** 82*4d7e907cSAndroid Build Coastguard Worker * Whether HE single user beamformee is enabled or not on softAp. 83*4d7e907cSAndroid Build Coastguard Worker * Note: this is only applicable if 802.11ax is supported for softAp 84*4d7e907cSAndroid Build Coastguard Worker */ 85*4d7e907cSAndroid Build Coastguard Worker bool enableHeSingleUserBeamformee; 86*4d7e907cSAndroid Build Coastguard Worker 87*4d7e907cSAndroid Build Coastguard Worker /** 88*4d7e907cSAndroid Build Coastguard Worker * Whether HE multiple user beamformer is enabled or not on softAp. 89*4d7e907cSAndroid Build Coastguard Worker * Note: this is only applicable if 802.11ax is supported for softAp 90*4d7e907cSAndroid Build Coastguard Worker */ 91*4d7e907cSAndroid Build Coastguard Worker bool enableHeMultiUserBeamformer; 92*4d7e907cSAndroid Build Coastguard Worker 93*4d7e907cSAndroid Build Coastguard Worker /** 94*4d7e907cSAndroid Build Coastguard Worker * Whether HE Target Wait Time (TWT) is enabled or not on softAp. 95*4d7e907cSAndroid Build Coastguard Worker * Note: this is only applicable if 802.11ax is supported for softAp 96*4d7e907cSAndroid Build Coastguard Worker */ 97*4d7e907cSAndroid Build Coastguard Worker bool enableHeTargetWakeTime; 98*4d7e907cSAndroid Build Coastguard Worker }; 99*4d7e907cSAndroid Build Coastguard Worker 100*4d7e907cSAndroid Build Coastguard Worker /** 101*4d7e907cSAndroid Build Coastguard Worker * Parameters to specify the channel frequency range for ACS. 102*4d7e907cSAndroid Build Coastguard Worker */ 103*4d7e907cSAndroid Build Coastguard Worker struct AcsFrequencyRange { 104*4d7e907cSAndroid Build Coastguard Worker /** 105*4d7e907cSAndroid Build Coastguard Worker * Channel Frequency (in MHz) at the start of the range. 106*4d7e907cSAndroid Build Coastguard Worker */ 107*4d7e907cSAndroid Build Coastguard Worker uint32_t start; 108*4d7e907cSAndroid Build Coastguard Worker 109*4d7e907cSAndroid Build Coastguard Worker /** 110*4d7e907cSAndroid Build Coastguard Worker * Channel Frequency (in MHz) at the end of the range. 111*4d7e907cSAndroid Build Coastguard Worker */ 112*4d7e907cSAndroid Build Coastguard Worker uint32_t end; 113*4d7e907cSAndroid Build Coastguard Worker }; 114*4d7e907cSAndroid Build Coastguard Worker 115*4d7e907cSAndroid Build Coastguard Worker /** 116*4d7e907cSAndroid Build Coastguard Worker * Parameters to control the channel selection for the interface. 117*4d7e907cSAndroid Build Coastguard Worker */ 118*4d7e907cSAndroid Build Coastguard Worker struct ChannelParams { 119*4d7e907cSAndroid Build Coastguard Worker /** 120*4d7e907cSAndroid Build Coastguard Worker * Band to use for the SoftAp operations. 121*4d7e907cSAndroid Build Coastguard Worker */ 122*4d7e907cSAndroid Build Coastguard Worker bitfield<BandMask> bandMask; 123*4d7e907cSAndroid Build Coastguard Worker 124*4d7e907cSAndroid Build Coastguard Worker /** 125*4d7e907cSAndroid Build Coastguard Worker * This option can be used to specify the channel frequencies (in MHz) selected by ACS. 126*4d7e907cSAndroid Build Coastguard Worker * If this is an empty list, all channels allowed in selected HW mode 127*4d7e907cSAndroid Build Coastguard Worker * are specified implicitly. 128*4d7e907cSAndroid Build Coastguard Worker * Note: channels may be overridden by firmware. 129*4d7e907cSAndroid Build Coastguard Worker * Note: this option is ignored if ACS is disabled. 130*4d7e907cSAndroid Build Coastguard Worker */ 131*4d7e907cSAndroid Build Coastguard Worker vec<AcsFrequencyRange> acsChannelFreqRangesMhz; 132*4d7e907cSAndroid Build Coastguard Worker }; 133*4d7e907cSAndroid Build Coastguard Worker 134*4d7e907cSAndroid Build Coastguard Worker /** 135*4d7e907cSAndroid Build Coastguard Worker * Parameters to use for setting up the access point interface. 136*4d7e907cSAndroid Build Coastguard Worker */ 137*4d7e907cSAndroid Build Coastguard Worker struct IfaceParams { 138*4d7e907cSAndroid Build Coastguard Worker /** 139*4d7e907cSAndroid Build Coastguard Worker * Baseline information as defined in HAL 1.1. 140*4d7e907cSAndroid Build Coastguard Worker */ 141*4d7e907cSAndroid Build Coastguard Worker @1.1::IHostapd.IfaceParams V1_1; 142*4d7e907cSAndroid Build Coastguard Worker 143*4d7e907cSAndroid Build Coastguard Worker /** 144*4d7e907cSAndroid Build Coastguard Worker * Additional Hw mode params for the interface 145*4d7e907cSAndroid Build Coastguard Worker */ 146*4d7e907cSAndroid Build Coastguard Worker HwModeParams hwModeParams; 147*4d7e907cSAndroid Build Coastguard Worker 148*4d7e907cSAndroid Build Coastguard Worker /** 149*4d7e907cSAndroid Build Coastguard Worker * Additional Channel params for the interface 150*4d7e907cSAndroid Build Coastguard Worker */ 151*4d7e907cSAndroid Build Coastguard Worker ChannelParams channelParams; 152*4d7e907cSAndroid Build Coastguard Worker }; 153*4d7e907cSAndroid Build Coastguard Worker 154*4d7e907cSAndroid Build Coastguard Worker /** 155*4d7e907cSAndroid Build Coastguard Worker * Parameters to use for setting up the access point network. 156*4d7e907cSAndroid Build Coastguard Worker */ 157*4d7e907cSAndroid Build Coastguard Worker struct NetworkParams { 158*4d7e907cSAndroid Build Coastguard Worker /** 159*4d7e907cSAndroid Build Coastguard Worker * Baseline information as defined in HAL 1.0. 160*4d7e907cSAndroid Build Coastguard Worker */ 161*4d7e907cSAndroid Build Coastguard Worker @1.0::IHostapd.NetworkParams V1_0; 162*4d7e907cSAndroid Build Coastguard Worker /** Key management mask for the replace V1_0.encryptionType. */ 163*4d7e907cSAndroid Build Coastguard Worker EncryptionType encryptionType; 164*4d7e907cSAndroid Build Coastguard Worker /** 165*4d7e907cSAndroid Build Coastguard Worker * Passphrase for WPA3_SAE network, WPA3_SAE_TRANSITION and 166*4d7e907cSAndroid Build Coastguard Worker * WPA2_PSK. Replaces @1.0::IHostapd.NetworkParams.pskPassphrase. 167*4d7e907cSAndroid Build Coastguard Worker */ 168*4d7e907cSAndroid Build Coastguard Worker string passphrase; 169*4d7e907cSAndroid Build Coastguard Worker }; 170*4d7e907cSAndroid Build Coastguard Worker 171*4d7e907cSAndroid Build Coastguard Worker 172*4d7e907cSAndroid Build Coastguard Worker /** 173*4d7e907cSAndroid Build Coastguard Worker * Adds a new access point for hostapd to control. 174*4d7e907cSAndroid Build Coastguard Worker * 175*4d7e907cSAndroid Build Coastguard Worker * This should trigger the setup of an access point with the specified 176*4d7e907cSAndroid Build Coastguard Worker * interface and network params. 177*4d7e907cSAndroid Build Coastguard Worker * 178*4d7e907cSAndroid Build Coastguard Worker * @param ifaceParams AccessPoint Params for the access point. 179*4d7e907cSAndroid Build Coastguard Worker * @param nwParams Network Params for the access point. 180*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 181*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 182*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.SUCCESS|, 183*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_ARGS_INVALID|, 184*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_UNKNOWN|, 185*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_IFACE_EXISTS| 186*4d7e907cSAndroid Build Coastguard Worker */ 187*4d7e907cSAndroid Build Coastguard Worker addAccessPoint_1_2(IfaceParams ifaceParams, NetworkParams nwParams) 188*4d7e907cSAndroid Build Coastguard Worker generates (HostapdStatus status); 189*4d7e907cSAndroid Build Coastguard Worker 190*4d7e907cSAndroid Build Coastguard Worker /** 191*4d7e907cSAndroid Build Coastguard Worker * force one of the hotspot clients disconnect.. 192*4d7e907cSAndroid Build Coastguard Worker * 193*4d7e907cSAndroid Build Coastguard Worker * @param ifaceName Name of the interface. 194*4d7e907cSAndroid Build Coastguard Worker * @param clientAddress Mac Address of the hotspot client. 195*4d7e907cSAndroid Build Coastguard Worker * @param reasonCode One of disconnect reason code which defined by 802.11. 196*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 197*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 198*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.SUCCESS|, 199*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_IFACE_UNKNOWN| 200*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_CLIENT_UNKNOWN| 201*4d7e907cSAndroid Build Coastguard Worker */ 202*4d7e907cSAndroid Build Coastguard Worker forceClientDisconnect(string ifaceName, MacAddress clientAddress, 203*4d7e907cSAndroid Build Coastguard Worker Ieee80211ReasonCode reasonCode) generates (HostapdStatus status); 204*4d7e907cSAndroid Build Coastguard Worker 205*4d7e907cSAndroid Build Coastguard Worker /** 206*4d7e907cSAndroid Build Coastguard Worker * Set debug parameters for the hostapd. 207*4d7e907cSAndroid Build Coastguard Worker * 208*4d7e907cSAndroid Build Coastguard Worker * @param level Debug logging level for the hostapd. 209*4d7e907cSAndroid Build Coastguard Worker * (one of |DebugLevel| values). 210*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 211*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 212*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.SUCCESS|, 213*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_UNKNOWN| 214*4d7e907cSAndroid Build Coastguard Worker */ 215*4d7e907cSAndroid Build Coastguard Worker setDebugParams(DebugLevel level) 216*4d7e907cSAndroid Build Coastguard Worker generates (HostapdStatus status); 217*4d7e907cSAndroid Build Coastguard Worker}; 218