1fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang/*
2fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * Copyright (C) 2016 The Android Open Source Project
3fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang *
4fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * Licensed under the Apache License, Version 2.0 (the "License");
5fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * you may not use this file except in compliance with the License.
6fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * You may obtain a copy of the License at
7fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang *
8fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang *      http://www.apache.org/licenses/LICENSE-2.0
9fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang *
10fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * Unless required by applicable law or agreed to in writing, software
11fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * distributed under the License is distributed on an "AS IS" BASIS,
12fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * See the License for the specific language governing permissions and
14fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang * limitations under the License.
15fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang */
16fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang
17f771ca1e6e0961f7a9296f140f4df0eaea9dcaddChristopher Wileypackage android.net.wifi;
18f771ca1e6e0961f7a9296f140f4df0eaea9dcaddChristopher Wiley
19f229bbe6676ac7d12f4aa22a902eb2eefb2fc5c6Christopher Wileyimport android.net.wifi.IApInterface;
20c139fbf821d3c62523afbcf0950ebc2d1abaa93dChristopher Wileyimport android.net.wifi.IClientInterface;
21dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wangimport android.net.wifi.IInterfaceEventCallback;
22f229bbe6676ac7d12f4aa22a902eb2eefb2fc5c6Christopher Wiley
23f771ca1e6e0961f7a9296f140f4df0eaea9dcaddChristopher Wiley// Service interface that exposes primitives for controlling the WiFi
24fb2880c1108cf2b68599f3a879bf2f97dce6a3d4Christopher Wiley// subsystems of a device.
25f771ca1e6e0961f7a9296f140f4df0eaea9dcaddChristopher Wileyinterface IWificond {
26f771ca1e6e0961f7a9296f140f4df0eaea9dcaddChristopher Wiley
2730b1d2976873e3fe3cf7b8c5f381848c9c1ccdb2Christopher Wiley    // Create a network interface suitable for use as an AP.
2847443838f760908b9a6571aed4f4fa4e93ad37bcRoshan Pius    @nullable IApInterface createApInterface(@utf8InCpp String iface_name);
29f229bbe6676ac7d12f4aa22a902eb2eefb2fc5c6Christopher Wiley
30c139fbf821d3c62523afbcf0950ebc2d1abaa93dChristopher Wiley    // Create a network interface suitable for use as a WiFi client.
3147443838f760908b9a6571aed4f4fa4e93ad37bcRoshan Pius    @nullable IClientInterface createClientInterface(@utf8InCpp String iface_name);
32c139fbf821d3c62523afbcf0950ebc2d1abaa93dChristopher Wiley
33e5f2ed5f5892753d7d3ecb43df25773af47490f5Roshan Pius    // Remove a previously created AP network interface.
34e5f2ed5f5892753d7d3ecb43df25773af47490f5Roshan Pius    boolean tearDownApInterface(@utf8InCpp String iface_name);
35e5f2ed5f5892753d7d3ecb43df25773af47490f5Roshan Pius
36e5f2ed5f5892753d7d3ecb43df25773af47490f5Roshan Pius    // Remove a previously created STA network interface.
37e5f2ed5f5892753d7d3ecb43df25773af47490f5Roshan Pius    boolean tearDownClientInterface(@utf8InCpp String iface_name);
38e5f2ed5f5892753d7d3ecb43df25773af47490f5Roshan Pius
3930b1d2976873e3fe3cf7b8c5f381848c9c1ccdb2Christopher Wiley    // Tear down all existing interfaces.  This should enable clients to create
4030b1d2976873e3fe3cf7b8c5f381848c9c1ccdb2Christopher Wiley    // future interfaces immediately after this method returns.
4130b1d2976873e3fe3cf7b8c5f381848c9c1ccdb2Christopher Wiley    void tearDownInterfaces();
42f229bbe6676ac7d12f4aa22a902eb2eefb2fc5c6Christopher Wiley
4329fca8817115e7b30eac16cce5917520b1fc2834Ningyuan Wang    // @return list of the currently configured IClientInterface instances.
4429fca8817115e7b30eac16cce5917520b1fc2834Ningyuan Wang    List<IBinder> GetClientInterfaces();
4529fca8817115e7b30eac16cce5917520b1fc2834Ningyuan Wang
4629fca8817115e7b30eac16cce5917520b1fc2834Ningyuan Wang    // @return list of the currently configured IApInterface instances.
4729fca8817115e7b30eac16cce5917520b1fc2834Ningyuan Wang    List<IBinder> GetApInterfaces();
4829fca8817115e7b30eac16cce5917520b1fc2834Ningyuan Wang
493e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    // Returns an array of available frequencies for 2.4GHz channels.
503e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    // Returrns null on failure.
513e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    @nullable int[] getAvailable2gChannels();
523e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang
533e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    // Returns an array of available frequencies for 5GHz non-DFS channels.
543e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    // Returrns null on failure.
553e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    @nullable int[] getAvailable5gNonDFSChannels();
563e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang
573e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    // Returns an array of available frequencies for DFS channels.
583e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    // This also includes passive only frequecies which are not for DFS channels.
593e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    // Returrns null on failure.
603e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang    @nullable int[] getAvailableDFSChannels();
613e5057cb3858bd8b0d4ea01d1eb86757cced8ce4Ningyuan Wang
62629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    // Enable wpa_supplicant.
63629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    // Returns true if supplicant was successfully enabled,
64629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    // or is already enabled.
65629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    boolean enableSupplicant();
66629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius
67629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    // Disable wpa_supplicant.
68629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    // Returns true if supplicant was successfully disabled,
69629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    // or is already disabled.
70629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius    boolean disableSupplicant();
71629acb02bfa2a0d17aa2f55aa54b50da47a7ed59Roshan Pius
72dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // Register a callback to receive interface status updates.
73dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    //
74dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // Multiple callbacks can be registered simultaneously.
75dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // Duplicate registrations of the same callback will be ignored.
76dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    //
77dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // @param callback object to add to the set of registered callbacks.
78dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    oneway void RegisterCallback(IInterfaceEventCallback callback);
79dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang
80dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // Remove a callback from the set of registered callbacks.
81dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    //
82dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // This must be the same instance as previously registered.
83dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // Requests to remove unknown callbacks will be ignored.
84dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    //
85dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    // @param callback object to remove from the set of registered callbacks.
86dea7ebe3078dc347ef4d49d2293b391a479242cfNingyuan Wang    oneway void UnregisterCallback(IInterfaceEventCallback callback);
87fa9619e3efeb8afab8be0a71f77cda26261622cbNingyuan Wang}
88