1/*
2 * Copyright 2016 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.wifi.supplicant@1.1;
18
19import @1.0::ISupplicant;
20import @1.0::ISupplicantIface;
21import @1.0::SupplicantStatus;
22
23/**
24 * Interface exposed by the supplicant HIDL service registered
25 * with the hardware service manager.
26 * This is the root level object for any the supplicant interactions.
27 */
28interface ISupplicant extends @1.0::ISupplicant {
29    /**
30     * Registers a wireless interface in supplicant.
31     *
32     * @param ifaceInfo Combination of the interface type and name(e.g wlan0).
33     * @return status Status of the operation.
34     *         Possible status codes:
35     *         |SupplicantStatusCode.SUCCESS|,
36     *         |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
37     *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
38     *         |SupplicantStatusCode.FAILURE_IFACE_EXISTS|
39     * @return iface HIDL interface object representing the interface if
40     *         successful, null otherwise.
41     */
42    addInterface(IfaceInfo ifaceInfo)
43        generates (SupplicantStatus status, ISupplicantIface iface);
44
45    /**
46     * Deregisters a wireless interface from supplicant.
47     *
48     * @param ifaceInfo Combination of the interface type and name(e.g wlan0).
49     * @return status Status of the operation.
50     *         Possible status codes:
51     *         |SupplicantStatusCode.SUCCESS|,
52     *         |SupplicantStatusCode.FAILURE_ARGS_INVALID|,
53     *         |SupplicantStatusCode.FAILURE_UNKNOWN|,
54     *         |SupplicantStatusCode.FAILURE_IFACE_UNKOWN|
55     */
56    removeInterface(IfaceInfo ifaceInfo) generates (SupplicantStatus status);
57
58    /**
59     * Terminate the service.
60     * This must de-register the service and clear all state. If this HAL
61     * supports the lazy HAL protocol, then this may trigger daemon to exit and
62     * wait to be restarted.
63     */
64    oneway terminate();
65};
66