blob: 34cea18783ae32d18d1376fee47a1d56c408e0ea [file] [log] [blame]
/*
* Copyright 2016 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.supplicant@1.0;
import ISupplicantCallback;
import ISupplicantIface;
/**
* Interface exposed by the supplicant HIDL service registered
* with the hardware service manager.
* This is the root level object for any the supplicant interactions.
*/
interface ISupplicant {
/**
* Debug levels for the supplicant.
* Only log messages with a level greater than the set level
* (via |setDebugParams|) will be logged.
*/
enum DebugLevel : uint32_t {
EXCESSIVE = 0,
MSGDUMP = 1,
DEBUG = 2,
INFO = 3,
WARNING = 4,
ERROR = 5
};
/**
* Structure describing the type and name of an iface
* controlled by the supplicant.
*/
struct IfaceInfo {
/**
* Type of the network interface.
*/
IfaceType type;
/**
* Name of the network interface, e.g., wlan0
*/
string name;
};
/**
* Gets a HIDL interface object for the interface corresponding to iface
* name which the supplicant already controls.
*
* @param ifaceInfo Combination of the iface type and name retrieved
* using |listInterfaces|.
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|,
* |SupplicantStatusCode.FAILURE_IFACE_UNKOWN|
* @return iface HIDL interface object representing the interface if
* successful, null otherwise.
*/
getInterface(IfaceInfo ifaceInfo)
generates (SupplicantStatus status, ISupplicantIface iface);
/**
* Retrieve a list of all the interfaces controlled by the supplicant.
*
* The corresponding |ISupplicantIface| object for any interface can be
* retrieved using |getInterface| method.
*
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|
* @return ifaces List of all interfaces controlled by the supplicant.
*/
listInterfaces() generates (SupplicantStatus status, vec<IfaceInfo> ifaces);
/**
* Register for callbacks from the supplicant service.
*
* These callbacks are invoked for global events that are not specific
* to any interface or network. Registration of multiple callback
* objects is supported. These objects must be deleted when the corresponding
* client process is dead.
*
* @param callback An instance of the |ISupplicantCallback| HIDL interface
* object.
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|
*/
registerCallback(ISupplicantCallback callback)
generates (SupplicantStatus status);
/**
* Set debug parameters for the supplicant.
*
* @param level Debug logging level for the supplicant.
* (one of |DebugLevel| values).
* @param timestamp Determines whether to show timestamps in logs or
* not.
* @param showKeys Determines whether to show keys in debug logs or
* not.
* CAUTION: Do not set this param in production code!
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|
*/
setDebugParams(DebugLevel level, bool showTimestamp, bool showKeys)
generates (SupplicantStatus status);
/**
* Get the debug level set.
*
* @return level one of |DebugLevel| values.
*/
getDebugLevel() generates (DebugLevel level);
/**
* Get whether the timestamps are shown in the debug logs or not.
*
* @return enabled true if set, false otherwise.
*/
isDebugShowTimestampEnabled() generates (bool enabled);
/**
* Get whether the keys are shown in the debug logs or not.
*
* @return enabled true if set, false otherwise.
*/
isDebugShowKeysEnabled() generates (bool enabled);
/**
* Set concurrency priority.
*
* When both P2P and STA mode ifaces are active, this must be used
* to prioritize either STA or P2P connection to resolve conflicts
* arising during single channel concurrency.
*
* @param type The type of iface to prioritize.
* @return status Status of the operation.
* Possible status codes:
* |SupplicantStatusCode.SUCCESS|,
* |SupplicantStatusCode.FAILURE_UNKNOWN|
*/
setConcurrencyPriority(IfaceType type) generates (SupplicantStatus status);
};