1/*
2 * Copyright (C) 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.net.wifi;
18
19import android.net.wifi.IApInterface;
20import android.net.wifi.IClientInterface;
21import android.net.wifi.IInterfaceEventCallback;
22
23// Service interface that exposes primitives for controlling the WiFi
24// subsystems of a device.
25interface IWificond {
26
27    // Create a network interface suitable for use as an AP.
28    @nullable IApInterface createApInterface();
29
30    // Create a network interface suitable for use as a WiFi client.
31    @nullable IClientInterface createClientInterface();
32
33    // Tear down all existing interfaces.  This should enable clients to create
34    // future interfaces immediately after this method returns.
35    void tearDownInterfaces();
36
37    // @return list of the currently configured IClientInterface instances.
38    List<IBinder> GetClientInterfaces();
39
40    // @return list of the currently configured IApInterface instances.
41    List<IBinder> GetApInterfaces();
42
43    // Register a callback to receive interface status updates.
44    //
45    // Multiple callbacks can be registered simultaneously.
46    // Duplicate registrations of the same callback will be ignored.
47    //
48    // @param callback object to add to the set of registered callbacks.
49    oneway void RegisterCallback(IInterfaceEventCallback callback);
50
51    // Remove a callback from the set of registered callbacks.
52    //
53    // This must be the same instance as previously registered.
54    // Requests to remove unknown callbacks will be ignored.
55    //
56    // @param callback object to remove from the set of registered callbacks.
57    oneway void UnregisterCallback(IInterfaceEventCallback callback);
58}
59