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@1.0; 18 19import IWifiIface; 20import IWifiNanIfaceEventCallback; 21 22/** 23 * Interface used to represent a single NAN(Neighbour Aware Network) iface. 24 * 25 * References to "NAN Spec" are to the Wi-Fi Alliance "Wi-Fi Neighbor Awareness 26 * Networking (NAN) Technical Specification". 27 */ 28interface IWifiNanIface extends IWifiIface { 29 /** 30 * Requests notifications of significant events on this iface. Multiple calls 31 * to this must register multiple callbacks each of which must receive all 32 * events. 33 * 34 * @param callback An instance of the |IWifiNanIfaceEventCallback| HIDL interface 35 * object. 36 * @return status WifiStatus of the operation. 37 * Possible status codes: 38 * |WifiStatusCode.SUCCESS|, 39 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID| 40 */ 41 registerEventCallback(IWifiNanIfaceEventCallback callback) 42 generates (WifiStatus status); 43 44 /** 45 * Get NAN capabilities. Asynchronous response is with 46 * |IWifiNanIfaceEventCallback.notifyCapabilitiesResponse|. 47 * 48 * @param cmdId command Id to use for this invocation. 49 * @return status WifiStatus of the operation. 50 * Possible status codes: 51 * |WifiStatusCode.SUCCESS|, 52 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 53 * |WifiStatusCode.ERROR_UNKNOWN| 54 */ 55 getCapabilitiesRequest(CommandIdShort cmdId) generates (WifiStatus status); 56 57 /** 58 * Enable NAN: configures and activates NAN clustering (does not start 59 * a discovery session or set up data-interfaces or data-paths). Use the 60 * |IWifiNanIface.configureRequest| method to change the configuration of an already enabled 61 * NAN interface. 62 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyEnableResponse|. 63 * 64 * @param cmdId command Id to use for this invocation. 65 * @param msg Instance of |NanEnableRequest|. 66 * @return status WifiStatus of the operation. 67 * Possible status codes: 68 * |WifiStatusCode.SUCCESS|, 69 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 70 * |WifiStatusCode.ERROR_INVALID_ARGS|, 71 * |WifiStatusCode.ERROR_UNKNOWN| 72 */ 73 enableRequest(CommandIdShort cmdId, NanEnableRequest msg) 74 generates (WifiStatus status); 75 76 /** 77 * Configure NAN: configures an existing NAN functionality (i.e. assumes 78 * |IWifiNanIface.enableRequest| already submitted and succeeded). 79 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyConfigResponse|. 80 * 81 * @param cmdId command Id to use for this invocation. 82 * @param msg Instance of |NanConfigRequest|. 83 * @return status WifiStatus of the operation. 84 * Possible status codes: 85 * |WifiStatusCode.SUCCESS|, 86 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 87 * |WifiStatusCode.ERROR_INVALID_ARGS|, 88 * |WifiStatusCode.ERROR_UNKNOWN| 89 */ 90 configRequest(CommandIdShort cmdId, NanConfigRequest msg) 91 generates (WifiStatus status); 92 93 /** 94 * Disable NAN functionality. 95 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyDisableResponse|. 96 * 97 * @param cmdId command Id to use for this invocation. 98 * @return status WifiStatus of the operation. 99 * Possible status codes: 100 * |WifiStatusCode.SUCCESS|, 101 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 102 * |WifiStatusCode.ERROR_UNKNOWN| 103 */ 104 disableRequest(CommandIdShort cmdId) generates (WifiStatus status); 105 106 /** 107 * Publish request to start advertising a discovery service. 108 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStartPublishResponse|. 109 * 110 * @param cmdId command Id to use for this invocation. 111 * @param msg Instance of |NanPublishRequest|. 112 * @return status WifiStatus of the operation. 113 * Possible status codes: 114 * |WifiStatusCode.SUCCESS|, 115 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 116 * |WifiStatusCode.ERROR_INVALID_ARGS|, 117 * |WifiStatusCode.ERROR_UNKNOWN| 118 */ 119 startPublishRequest(CommandIdShort cmdId, NanPublishRequest msg) 120 generates (WifiStatus status); 121 122 /** 123 * Stop publishing a discovery service. 124 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStopPublishResponse|. 125 * 126 * @param cmdId command Id to use for this invocation. 127 * @param sessionId ID of the publish discovery session to be stopped. 128 * @return status WifiStatus of the operation. 129 * Possible status codes: 130 * |WifiStatusCode.SUCCESS|, 131 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 132 * |WifiStatusCode.ERROR_UNKNOWN| 133 */ 134 stopPublishRequest(CommandIdShort cmdId, uint8_t sessionId) 135 generates (WifiStatus status); 136 137 /** 138 * Subscribe request to start searching for a discovery service. 139 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStartSubscribeResponse|. 140 * 141 * @param cmdId command Id to use for this invocation. 142 * @param msg Instance of |NanSubscribeRequest|. 143 * @return status WifiStatus of the operation. 144 * Possible status codes: 145 * |WifiStatusCode.SUCCESS|, 146 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 147 * |WifiStatusCode.ERROR_INVALID_ARGS|, 148 * |WifiStatusCode.ERROR_UNKNOWN| 149 */ 150 startSubscribeRequest(CommandIdShort cmdId, NanSubscribeRequest msg) 151 generates (WifiStatus status); 152 153 /** 154 * Stop subscribing to a discovery service. 155 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyStopSubscribeResponse|. 156 * 157 * @param cmdId command Id to use for this invocation. 158 * @param sessionId ID of the subscribe discovery session to be stopped. 159 * @return status WifiStatus of the operation. 160 * Possible status codes: 161 * |WifiStatusCode.SUCCESS|, 162 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 163 * |WifiStatusCode.ERROR_UNKNOWN| 164 */ 165 stopSubscribeRequest(CommandIdShort cmdId, uint8_t sessionId) 166 generates (WifiStatus status); 167 168 /** 169 * NAN transmit follow up message request. 170 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyTransmitFollowupResponse|. 171 * 172 * @param cmdId command Id to use for this invocation. 173 * @param msg Instance of |NanTransmitFollowupRequest|. 174 * @return status WifiStatus of the operation. 175 * Possible status codes: 176 * |WifiStatusCode.SUCCESS|, 177 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 178 * |WifiStatusCode.ERROR_INVALID_ARGS|, 179 * |WifiStatusCode.ERROR_UNKNOWN| 180 */ 181 transmitFollowupRequest(CommandIdShort cmdId, NanTransmitFollowupRequest msg) 182 generates (WifiStatus status); 183 184 /** 185 * Create a NAN Data Interface. 186 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyCreateDataInterfaceResponse|. 187 * 188 * @param cmdId command Id to use for this invocation. 189 * @return status WifiStatus of the operation. 190 * Possible status codes: 191 * |WifiStatusCode.SUCCESS|, 192 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 193 * |WifiStatusCode.ERROR_UNKNOWN| 194 */ 195 createDataInterfaceRequest(CommandIdShort cmdId, string ifaceName) 196 generates (WifiStatus status); 197 198 /** 199 * Delete a NAN Data Interface. 200 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyDeleteDataInterfaceResponse|. 201 * 202 * @param cmdId command Id to use for this invocation. 203 * @return status WifiStatus of the operation. 204 * Possible status codes: 205 * |WifiStatusCode.SUCCESS|, 206 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 207 * |WifiStatusCode.ERROR_UNKNOWN| 208 */ 209 deleteDataInterfaceRequest(CommandIdShort cmdId, string ifaceName) 210 generates (WifiStatus status); 211 212 /** 213 * Initiate a data-path (NDP) setup operation: Initiator. 214 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyInitiateDataPathResponse|. 215 * 216 * @param cmdId command Id to use for this invocation. 217 * @param msg Instance of |NanInitiateDataPathRequest|. 218 * @return status WifiStatus of the operation. 219 * Possible status codes: 220 * |WifiStatusCode.SUCCESS|, 221 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 222 * |WifiStatusCode.ERROR_INVALID_ARGS|, 223 * |WifiStatusCode.ERROR_UNKNOWN| 224 */ 225 initiateDataPathRequest(CommandIdShort cmdId, NanInitiateDataPathRequest msg) 226 generates (WifiStatus status); 227 228 /** 229 * Respond to a received data indication as part of a data-path (NDP) setup operation. An 230 * indication is received by the Responder from the Initiator. 231 * Asynchronous response is with 232 * |IWifiNanIfaceEventCallback.notifyRespondToDataPathIndicationResponse|. 233 * 234 * @param cmdId command Id to use for this invocation. 235 * @param msg Instance of |NanRespondToDataPathIndicationRequest|. 236 * @return status WifiStatus of the operation. 237 * Possible status codes: 238 * |WifiStatusCode.SUCCESS|, 239 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 240 * |WifiStatusCode.ERROR_INVALID_ARGS|, 241 * |WifiStatusCode.ERROR_UNKNOWN| 242 */ 243 respondToDataPathIndicationRequest(CommandIdShort cmdId, 244 NanRespondToDataPathIndicationRequest msg) 245 generates (WifiStatus status); 246 247 /** 248 * Data-path (NDP) termination request: executed by either Initiator or Responder. 249 * Asynchronous response is with |IWifiNanIfaceEventCallback.notifyTerminateDataPathResponse|. 250 * 251 * @param cmdId command Id to use for this invocation. 252 * @param ndpInstanceId Data-path instance ID to be terminated. 253 * @return status WifiStatus of the operation. 254 * Possible status codes: 255 * |WifiStatusCode.SUCCESS|, 256 * |WifiStatusCode.ERROR_WIFI_IFACE_INVALID|, 257 * |WifiStatusCode.ERROR_UNKNOWN| 258 */ 259 terminateDataPathRequest(CommandIdShort cmdId, uint32_t ndpInstanceId) 260 generates (WifiStatus status); 261}; 262