platform_hardware_interfaces/wifi/supplicant/1.0/ISupplicant.hal
Roshan Pius 3f050c1a0f supplicant(interface): Add support for DRIVER commands
These were legacy commands added to wpa_supplicant specifically for
android when the vendor HAL did not exist. These string commands are
passed as passthough to the driver by wpa_supplicant. Instead of adding
a single method to pass through these strings. Add separate methods for
each "DRIVER xxx" command that we currently used in Android framework.

Bug: 32699292
Test: Compiles
Change-Id: I8b62b3250496fa996bb97b4af0ba570a3d345cc3
2016-12-16 05:36:35 +00:00

159 lines
5.1 KiB
Text

/*
* 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);
};