blob: 349339820ec5042ae72fd7ea86b93a31c5ee2e36 [file] [log] [blame]
/*
* Copyright 2017 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.hostapd@1.0;
import android.hardware.wifi.supplicant@1.0::Ssid;
/**
* Top-level object for managing SoftAPs.
*/
interface IHostapd {
/**
* Size limits for some of the params used in this interface.
*/
enum ParamSizeLimits : uint32_t {
/** Max length of SSID param. */
SSID_MAX_LEN_IN_BYTES = 32,
/** Min length of PSK passphrase param. */
WPA2_PSK_PASSPHRASE_MIN_LEN_IN_BYTES = 8,
/** Max length of PSK passphrase param. */
WPA2_PSK_PASSPHRASE_MAX_LEN_IN_BYTES = 63,
};
/** Possble Security types. */
enum EncryptionType : uint32_t {
NONE,
WPA,
WPA2
};
/**
* Band to use for the SoftAp operations.
* When using ACS, special value |BAND_ANY| can be
* used to indicate that any supported band can be used. This special
* case is currently supported only with drivers with which
* offloaded ACS is used.
*/
enum Band : uint32_t {
BAND_2_4_GHZ,
BAND_5_GHZ,
BAND_ANY
};
/**
* Parameters to control the HW mode for the interface.
*/
struct HwModeParams {
/**
* Whether IEEE 802.11n (HT) is enabled or not.
* Note: hwMode=G (2.4 GHz) and hwMode=A (5 GHz) is used to specify
* the band.
*/
bool enable80211N;
/**
* Whether IEEE 802.11ac (VHT) is enabled or not.
* Note: hw_mode=a is used to specify that 5 GHz band is used with VHT.
*/
bool enable80211AC;
};
/**
* Parameters to control the channel selection for the interface.
*/
struct ChannelParams {
/**
* Whether to enable ACS (Automatic Channel Selection) or not.
* The channel can be selected automatically at run time by setting
* this flag, which must enable the ACS survey based algorithm.
*/
bool enableAcs;
/**
* This option can be used to exclude all DFS channels from the ACS
* channel list in cases where the driver supports DFS channels.
**/
bool acsShouldExcludeDfs;
/**
* Channel number (IEEE 802.11) to use for the interface.
* If ACS is enabled, this field is ignored.
*/
uint32_t channel;
/**
* Band to use for the SoftAp operations.
*/
Band band;
};
/**
* Parameters to use for setting up the access point interface.
*/
struct IfaceParams {
/** Name of the interface */
string ifaceName;
/** Hw mode params for the interface */
HwModeParams hwModeParams;
/** Chanel params for the interface */
ChannelParams channelParams;
};
/**
* Parameters to use for setting up the access point network.
*/
struct NetworkParams {
/** SSID to set for the network */
Ssid ssid;
/** Whether the network needs to be hidden or not. */
bool isHidden;
/** Key management mask for the network. */
EncryptionType encryptionType;
/** Passphrase for WPA_PSK network. */
string pskPassphrase;
};
/**
* Adds a new access point for hostapd to control.
*
* This should trigger the setup of an access point with the specified
* interface and network params.
*
* @param ifaceParams AccessPoint Params for the access point.
* @param nwParams Network Params for the access point.
* @return status Status of the operation.
* Possible status codes:
* |HostapdStatusCode.SUCCESS|,
* |HostapdStatusCode.FAILURE_ARGS_INVALID|,
* |HostapdStatusCode.FAILURE_UNKNOWN|,
* |HostapdStatusCode.FAILURE_IFACE_EXISTS|
*/
addAccessPoint(IfaceParams ifaceParams, NetworkParams nwParams)
generates(HostapdStatus status);
/**
* Removes an existing access point from hostapd.
*
* This should bring down the access point previously setup on the
* interface.
*
* @param ifaceName Name of the interface.
* @return status Status of the operation.
* Possible status codes:
* |HostapdStatusCode.SUCCESS|,
* |HostapdStatusCode.FAILURE_UNKNOWN|,
* |HostapdStatusCode.FAILURE_IFACE_UNKNOWN|
*/
removeAccessPoint(string ifaceName) generates(HostapdStatus status);
/**
* Terminate the service.
* This must de-register the service and clear all state. If this HAL
* supports the lazy HAL protocol, then this may trigger daemon to exit and
* wait to be restarted.
*/
oneway terminate();
};