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.2::HostapdStatus; 20*4d7e907cSAndroid Build Coastguard Workerimport @1.2::IHostapd.BandMask; 21*4d7e907cSAndroid Build Coastguard Workerimport @1.2::IHostapd.HwModeParams; 22*4d7e907cSAndroid Build Coastguard Workerimport @1.2::IHostapd.IfaceParams; 23*4d7e907cSAndroid Build Coastguard Workerimport @1.2::IHostapd.NetworkParams; 24*4d7e907cSAndroid Build Coastguard Workerimport @1.2::IHostapd; 25*4d7e907cSAndroid Build Coastguard Workerimport IHostapdCallback; 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.2::IHostapd { 31*4d7e907cSAndroid Build Coastguard Worker 32*4d7e907cSAndroid Build Coastguard Worker enum BandMask : @1.2::IHostapd.BandMask { 33*4d7e907cSAndroid Build Coastguard Worker /** 34*4d7e907cSAndroid Build Coastguard Worker * 60 GHz band. 35*4d7e907cSAndroid Build Coastguard Worker */ 36*4d7e907cSAndroid Build Coastguard Worker BAND_60_GHZ = 1 << 3, 37*4d7e907cSAndroid Build Coastguard Worker }; 38*4d7e907cSAndroid Build Coastguard Worker 39*4d7e907cSAndroid Build Coastguard Worker /** 40*4d7e907cSAndroid Build Coastguard Worker * Parameters to control the HW mode for the interface. 41*4d7e907cSAndroid Build Coastguard Worker */ 42*4d7e907cSAndroid Build Coastguard Worker struct HwModeParams { 43*4d7e907cSAndroid Build Coastguard Worker /** 44*4d7e907cSAndroid Build Coastguard Worker * Baseline information as defined in HAL 1.2. 45*4d7e907cSAndroid Build Coastguard Worker */ 46*4d7e907cSAndroid Build Coastguard Worker @1.2::IHostapd.HwModeParams V1_2; 47*4d7e907cSAndroid Build Coastguard Worker 48*4d7e907cSAndroid Build Coastguard Worker /** 49*4d7e907cSAndroid Build Coastguard Worker * Enable EDMG (802.11ay), this option is only allowed for the 60GHz band. 50*4d7e907cSAndroid Build Coastguard Worker */ 51*4d7e907cSAndroid Build Coastguard Worker bool enableEdmg; 52*4d7e907cSAndroid Build Coastguard Worker }; 53*4d7e907cSAndroid Build Coastguard Worker 54*4d7e907cSAndroid Build Coastguard Worker /** 55*4d7e907cSAndroid Build Coastguard Worker * Parameters to control the channel selection for the interface. 56*4d7e907cSAndroid Build Coastguard Worker */ 57*4d7e907cSAndroid Build Coastguard Worker struct ChannelParams { 58*4d7e907cSAndroid Build Coastguard Worker /** 59*4d7e907cSAndroid Build Coastguard Worker * Baseline information as defined in HAL 1.2. 60*4d7e907cSAndroid Build Coastguard Worker * 61*4d7e907cSAndroid Build Coastguard Worker * Includes bandMask and acsChannelFreqRangesMhz 62*4d7e907cSAndroid Build Coastguard Worker */ 63*4d7e907cSAndroid Build Coastguard Worker @1.2::IHostapd.ChannelParams V1_2; 64*4d7e907cSAndroid Build Coastguard Worker 65*4d7e907cSAndroid Build Coastguard Worker /** 66*4d7e907cSAndroid Build Coastguard Worker * Whether to enable ACS (Automatic Channel Selection) or not. 67*4d7e907cSAndroid Build Coastguard Worker * The channel can be selected automatically at run time by setting 68*4d7e907cSAndroid Build Coastguard Worker * this flag, which must enable the ACS survey based algorithm. 69*4d7e907cSAndroid Build Coastguard Worker * 70*4d7e907cSAndroid Build Coastguard Worker * Note: It is used instead of V1_0::ChannelParams.enableAcs inside 71*4d7e907cSAndroid Build Coastguard Worker * V1_3::IfaceParams.V1_2.V1_1.V1_0. 72*4d7e907cSAndroid Build Coastguard Worker */ 73*4d7e907cSAndroid Build Coastguard Worker bool enableAcs; 74*4d7e907cSAndroid Build Coastguard Worker 75*4d7e907cSAndroid Build Coastguard Worker /** 76*4d7e907cSAndroid Build Coastguard Worker * Channel number (IEEE 802.11) to use for the interface. 77*4d7e907cSAndroid Build Coastguard Worker * If ACS is enabled, this field is ignored. 78*4d7e907cSAndroid Build Coastguard Worker * 79*4d7e907cSAndroid Build Coastguard Worker * If |enableEdmg| is true, the channel must be set. Refer to 80*4d7e907cSAndroid Build Coastguard Worker * P802.11ay_D4.0 29.3.4. 81*4d7e907cSAndroid Build Coastguard Worker * 82*4d7e907cSAndroid Build Coastguard Worker * Note: It is used instead of V1_0::ChannelParams.channel inside 83*4d7e907cSAndroid Build Coastguard Worker * V1_3::IfaceParams.V1_2.V1_1.V1_0. 84*4d7e907cSAndroid Build Coastguard Worker */ 85*4d7e907cSAndroid Build Coastguard Worker uint32_t channel; 86*4d7e907cSAndroid Build Coastguard Worker 87*4d7e907cSAndroid Build Coastguard Worker /** 88*4d7e907cSAndroid Build Coastguard Worker * Band to use for the SoftAp operations. 89*4d7e907cSAndroid Build Coastguard Worker * Note: It is used instead of V1_2::ChannelParams.bandMask inside 90*4d7e907cSAndroid Build Coastguard Worker * V1_3::IfaceParams.V1_2.channelParams 91*4d7e907cSAndroid Build Coastguard Worker */ 92*4d7e907cSAndroid Build Coastguard Worker bitfield<BandMask> bandMask; 93*4d7e907cSAndroid Build Coastguard Worker }; 94*4d7e907cSAndroid Build Coastguard Worker 95*4d7e907cSAndroid Build Coastguard Worker /** 96*4d7e907cSAndroid Build Coastguard Worker * Parameters to use for setting up the dual access point interfaces. 97*4d7e907cSAndroid Build Coastguard Worker */ 98*4d7e907cSAndroid Build Coastguard Worker struct IfaceParams { 99*4d7e907cSAndroid Build Coastguard Worker /** 100*4d7e907cSAndroid Build Coastguard Worker * Baseline information as defined in HAL 1.2. 101*4d7e907cSAndroid Build Coastguard Worker */ 102*4d7e907cSAndroid Build Coastguard Worker @1.2::IHostapd.IfaceParams V1_2; 103*4d7e907cSAndroid Build Coastguard Worker 104*4d7e907cSAndroid Build Coastguard Worker /** 105*4d7e907cSAndroid Build Coastguard Worker * Additional Hw mode params for the interface 106*4d7e907cSAndroid Build Coastguard Worker */ 107*4d7e907cSAndroid Build Coastguard Worker HwModeParams hwModeParams; 108*4d7e907cSAndroid Build Coastguard Worker 109*4d7e907cSAndroid Build Coastguard Worker /** 110*4d7e907cSAndroid Build Coastguard Worker * The list of the channel params for the dual interfaces. 111*4d7e907cSAndroid Build Coastguard Worker */ 112*4d7e907cSAndroid Build Coastguard Worker vec<ChannelParams> channelParamsList; 113*4d7e907cSAndroid Build Coastguard Worker }; 114*4d7e907cSAndroid Build Coastguard Worker 115*4d7e907cSAndroid Build Coastguard Worker /** 116*4d7e907cSAndroid Build Coastguard Worker * Parameters to use for setting up the access point network. 117*4d7e907cSAndroid Build Coastguard Worker */ 118*4d7e907cSAndroid Build Coastguard Worker struct NetworkParams { 119*4d7e907cSAndroid Build Coastguard Worker /** 120*4d7e907cSAndroid Build Coastguard Worker * Baseline information as defined in HAL 1.2. 121*4d7e907cSAndroid Build Coastguard Worker */ 122*4d7e907cSAndroid Build Coastguard Worker @1.2::IHostapd.NetworkParams V1_2; 123*4d7e907cSAndroid Build Coastguard Worker 124*4d7e907cSAndroid Build Coastguard Worker /** 125*4d7e907cSAndroid Build Coastguard Worker * Enable the interworking service and set access network type to 126*4d7e907cSAndroid Build Coastguard Worker * CHARGEABLE_PUBLIC_NETWORK when set to true. 127*4d7e907cSAndroid Build Coastguard Worker */ 128*4d7e907cSAndroid Build Coastguard Worker bool isMetered; 129*4d7e907cSAndroid Build Coastguard Worker }; 130*4d7e907cSAndroid Build Coastguard Worker 131*4d7e907cSAndroid Build Coastguard Worker /** 132*4d7e907cSAndroid Build Coastguard Worker * Adds a new access point for hostapd to control. 133*4d7e907cSAndroid Build Coastguard Worker * 134*4d7e907cSAndroid Build Coastguard Worker * This should trigger the setup of an access point with the specified 135*4d7e907cSAndroid Build Coastguard Worker * interface and network params. 136*4d7e907cSAndroid Build Coastguard Worker * 137*4d7e907cSAndroid Build Coastguard Worker * @param ifaceParams AccessPoint Params for the access point. 138*4d7e907cSAndroid Build Coastguard Worker * @param nwParams Network Params for the access point. 139*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 140*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 141*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.SUCCESS|, 142*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_ARGS_INVALID|, 143*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_UNKNOWN|, 144*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_IFACE_EXISTS| 145*4d7e907cSAndroid Build Coastguard Worker */ 146*4d7e907cSAndroid Build Coastguard Worker addAccessPoint_1_3(IfaceParams ifaceParams, NetworkParams nwParams) 147*4d7e907cSAndroid Build Coastguard Worker generates (HostapdStatus status); 148*4d7e907cSAndroid Build Coastguard Worker 149*4d7e907cSAndroid Build Coastguard Worker /** 150*4d7e907cSAndroid Build Coastguard Worker * Register for callbacks from the hostapd service. 151*4d7e907cSAndroid Build Coastguard Worker * 152*4d7e907cSAndroid Build Coastguard Worker * These callbacks are invoked for global events that are not specific 153*4d7e907cSAndroid Build Coastguard Worker * to any interface or network. Registration of multiple callback 154*4d7e907cSAndroid Build Coastguard Worker * objects is supported. These objects must be deleted when the corresponding 155*4d7e907cSAndroid Build Coastguard Worker * client process is dead. 156*4d7e907cSAndroid Build Coastguard Worker * 157*4d7e907cSAndroid Build Coastguard Worker * @param callback An instance of the |IHostapdCallback| HIDL interface 158*4d7e907cSAndroid Build Coastguard Worker * object. 159*4d7e907cSAndroid Build Coastguard Worker * @return status Status of the operation. 160*4d7e907cSAndroid Build Coastguard Worker * Possible status codes: 161*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.SUCCESS|, 162*4d7e907cSAndroid Build Coastguard Worker * |HostapdStatusCode.FAILURE_UNKNOWN| 163*4d7e907cSAndroid Build Coastguard Worker */ 164*4d7e907cSAndroid Build Coastguard Worker registerCallback_1_3(IHostapdCallback callback) generates (HostapdStatus status); 165*4d7e907cSAndroid Build Coastguard Worker}; 166