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 [email protected]; 18 19import ISupplicantCallback; 20import ISupplicantIface; 21 22/** 23 * Interface exposed by the supplicant HIDL service registered 24 * with the hardware service manager. 25 * This is the root level object for any the supplicant interactions. 26 */ 27interface ISupplicant { 28 /** 29 * Debug levels for the supplicant. 30 * Only log messages with a level greater than the set level 31 * (via |setDebugParams|) will be logged. 32 */ 33 enum DebugLevel : uint32_t { 34 EXCESSIVE = 0, 35 MSGDUMP = 1, 36 DEBUG = 2, 37 INFO = 3, 38 WARNING = 4, 39 ERROR = 5 40 }; 41 42 /** 43 * Structure describing the type and name of an iface 44 * controlled by the supplicant. 45 */ 46 struct IfaceInfo { 47 /** 48 * Type of the network interface. 49 */ 50 IfaceType type; 51 /** 52 * Name of the network interface, e.g., wlan0 53 */ 54 string name; 55 }; 56 57 /** 58 * Gets a HIDL interface object for the interface corresponding to iface 59 * name which the supplicant already controls. 60 * 61 * @param ifaceInfo Combination of the iface type and name retrieved 62 * using |listInterfaces|. 63 * @return status Status of the operation. 64 * Possible status codes: 65 * |SupplicantStatusCode.SUCCESS|, 66 * |SupplicantStatusCode.FAILURE_UNKNOWN|, 67 * |SupplicantStatusCode.FAILURE_IFACE_UNKOWN| 68 * @return iface HIDL interface object representing the interface if 69 * successful, null otherwise. 70 */ 71 getInterface(IfaceInfo ifaceInfo) 72 generates (SupplicantStatus status, ISupplicantIface iface); 73 74 /** 75 * Retrieve a list of all the interfaces controlled by the supplicant. 76 * 77 * The corresponding |ISupplicantIface| object for any interface can be 78 * retrieved using |getInterface| method. 79 * 80 * @return status Status of the operation. 81 * Possible status codes: 82 * |SupplicantStatusCode.SUCCESS|, 83 * |SupplicantStatusCode.FAILURE_UNKNOWN| 84 * @return ifaces List of all interfaces controlled by the supplicant. 85 */ 86 listInterfaces() generates (SupplicantStatus status, vec<IfaceInfo> ifaces); 87 88 /** 89 * Register for callbacks from the supplicant service. 90 * 91 * These callbacks are invoked for global events that are not specific 92 * to any interface or network. Registration of multiple callback 93 * objects is supported. These objects must be deleted when the corresponding 94 * client process is dead. 95 * 96 * @param callback An instance of the |ISupplicantCallback| HIDL interface 97 * object. 98 * @return status Status of the operation. 99 * Possible status codes: 100 * |SupplicantStatusCode.SUCCESS|, 101 * |SupplicantStatusCode.FAILURE_UNKNOWN| 102 */ 103 registerCallback(ISupplicantCallback callback) 104 generates (SupplicantStatus status); 105 106 /** 107 * Set debug parameters for the supplicant. 108 * 109 * @param level Debug logging level for the supplicant. 110 * (one of |DebugLevel| values). 111 * @param timestamp Determines whether to show timestamps in logs or 112 * not. 113 * @param showKeys Determines whether to show keys in debug logs or 114 * not. 115 * CAUTION: Do not set this param in production code! 116 * @return status Status of the operation. 117 * Possible status codes: 118 * |SupplicantStatusCode.SUCCESS|, 119 * |SupplicantStatusCode.FAILURE_UNKNOWN| 120 */ 121 setDebugParams(DebugLevel level, bool showTimestamp, bool showKeys) 122 generates (SupplicantStatus status); 123 124 /** 125 * Get the debug level set. 126 * 127 * @return level one of |DebugLevel| values. 128 */ 129 getDebugLevel() generates (DebugLevel level); 130 131 /** 132 * Get whether the timestamps are shown in the debug logs or not. 133 * 134 * @return enabled true if set, false otherwise. 135 */ 136 isDebugShowTimestampEnabled() generates (bool enabled); 137 138 /** 139 * Get whether the keys are shown in the debug logs or not. 140 * 141 * @return enabled true if set, false otherwise. 142 */ 143 isDebugShowKeysEnabled() generates (bool enabled); 144 145 /** 146 * Set concurrency priority. 147 * 148 * When both P2P and STA mode ifaces are active, this must be used 149 * to prioritize either STA or P2P connection to resolve conflicts 150 * arising during single channel concurrency. 151 * 152 * @param type The type of iface to prioritize. 153 * @return status Status of the operation. 154 * Possible status codes: 155 * |SupplicantStatusCode.SUCCESS|, 156 * |SupplicantStatusCode.FAILURE_UNKNOWN| 157 */ 158 setConcurrencyPriority(IfaceType type) generates (SupplicantStatus status); 159}; 160