• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 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 
17 package com.android.server.wifi;
18 
19 import android.annotation.NonNull;
20 import android.net.DhcpResultsParcelable;
21 import android.net.MacAddress;
22 import android.net.Network;
23 import android.net.wifi.IWifiConnectedNetworkScorer;
24 import android.net.wifi.WifiConfiguration;
25 import android.net.wifi.WifiInfo;
26 import android.net.wifi.WifiManager;
27 import android.net.wifi.WifiManager.DeviceMobilityState;
28 import android.net.wifi.hotspot2.IProvisioningCallback;
29 import android.net.wifi.hotspot2.OsuProvider;
30 import android.net.wifi.nl80211.DeviceWiphyCapabilities;
31 import android.os.IBinder;
32 import android.os.Message;
33 import android.os.WorkSource;
34 
35 import com.android.server.wifi.util.ActionListenerWrapper;
36 
37 import java.io.FileDescriptor;
38 import java.io.PrintWriter;
39 import java.util.ArrayList;
40 import java.util.List;
41 import java.util.Set;
42 
43 /**
44  * Default implementations for {@link ClientMode} APIs.
45  */
46 public interface ClientModeDefaults extends ClientMode {
dump(FileDescriptor fd, PrintWriter pw, String[] args)47     default void dump(FileDescriptor fd, PrintWriter pw, String[] args) { }
48 
connectNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper, int callingUid, @NonNull String packageName)49     default void connectNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper,
50             int callingUid, @NonNull String packageName) {
51         // wifi off, can't connect.
52         wrapper.sendFailure(WifiManager.ActionListener.FAILURE_BUSY);
53     }
54 
saveNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper, int callingUid, @NonNull String packageName)55     default void saveNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper,
56             int callingUid, @NonNull String packageName) {
57         // wifi off, nothing more to do here.
58         wrapper.sendSuccess();
59     }
60 
disconnect()61     default void disconnect() { }
62 
reconnect(WorkSource ws)63     default void reconnect(WorkSource ws) { }
64 
reassociate()65     default void reassociate() { }
66 
startConnectToNetwork(int networkId, int uid, String bssid)67     default void startConnectToNetwork(int networkId, int uid, String bssid) { }
68 
startRoamToNetwork(int networkId, String bssid)69     default void startRoamToNetwork(int networkId, String bssid) { }
70 
onDeviceMobilityStateUpdated(@eviceMobilityState int newState)71     default void onDeviceMobilityStateUpdated(@DeviceMobilityState int newState) { }
72 
setLinkLayerStatsPollingInterval(int newIntervalMs)73     default void setLinkLayerStatsPollingInterval(int newIntervalMs) { }
74 
setWifiConnectedNetworkScorer( IBinder binder, IWifiConnectedNetworkScorer scorer)75     default boolean setWifiConnectedNetworkScorer(
76             IBinder binder, IWifiConnectedNetworkScorer scorer) {
77         // don't fail the public API when wifi is off.
78         return true;
79     }
80 
clearWifiConnectedNetworkScorer()81     default void clearWifiConnectedNetworkScorer() { }
82 
83     /**
84      * Notify the connected network scorer of the user accepting a network switch.
85      */
onNetworkSwitchAccepted(int targetNetworkId, String targetBssid)86     default void onNetworkSwitchAccepted(int targetNetworkId, String targetBssid) { }
87 
88     /**
89      * Notify the connected network scorer of the user rejecting a network switch.
90      */
onNetworkSwitchRejected(int targetNetworkId, String targetBssid)91     default void onNetworkSwitchRejected(int targetNetworkId, String targetBssid) { }
92 
resetSimAuthNetworks(@lientModeImpl.ResetSimReason int resetReason)93     default void resetSimAuthNetworks(@ClientModeImpl.ResetSimReason int resetReason) { }
94 
onBluetoothConnectionStateChanged()95     default void onBluetoothConnectionStateChanged() { }
96 
getConnectionInfo()97     default WifiInfo getConnectionInfo() {
98         return new WifiInfo();
99     }
100 
syncQueryPasspointIcon(long bssid, String fileName)101     default boolean syncQueryPasspointIcon(long bssid, String fileName) {
102         return false;
103     }
104 
getCurrentNetwork()105     default Network getCurrentNetwork() {
106         return null;
107     }
108 
syncGetDhcpResultsParcelable()109     default DhcpResultsParcelable syncGetDhcpResultsParcelable() {
110         return new DhcpResultsParcelable();
111     }
112 
syncStartSubscriptionProvisioning(int callingUid, OsuProvider provider, IProvisioningCallback callback)113     default boolean syncStartSubscriptionProvisioning(int callingUid, OsuProvider provider,
114             IProvisioningCallback callback) {
115         return false;
116     }
117 
118     /** Enable TDLS session with remote MAC address */
enableTdls(String remoteMacAddress, boolean enable)119     default boolean enableTdls(String remoteMacAddress, boolean enable) {
120         return false;
121     }
122 
123     /** Enable TDLS session with remote IP address */
enableTdlsWithRemoteIpAddress(String remoteIpAddress, boolean enable)124     default boolean enableTdlsWithRemoteIpAddress(String remoteIpAddress, boolean enable) {
125         return false;
126     }
127 
128     /** Check if a TDLS session can be established */
isTdlsOperationCurrentlyAvailable()129     default boolean isTdlsOperationCurrentlyAvailable() {
130         return false;
131     }
132 
133     /** The maximum number of TDLS sessions supported by the device */
getMaxSupportedConcurrentTdlsSessions()134     default int getMaxSupportedConcurrentTdlsSessions() {
135         return -1;
136     }
137 
138     /** The number of Peer mac addresses configured in the device for establishing a TDLS session */
getNumberOfEnabledTdlsSessions()139     default int getNumberOfEnabledTdlsSessions() {
140         return 0;
141     }
142 
dumpIpClient(FileDescriptor fd, PrintWriter pw, String[] args)143     default void dumpIpClient(FileDescriptor fd, PrintWriter pw, String[] args) { }
144 
dumpWifiScoreReport(FileDescriptor fd, PrintWriter pw, String[] args)145     default void dumpWifiScoreReport(FileDescriptor fd, PrintWriter pw, String[] args) { }
146 
enableVerboseLogging(boolean verbose)147     default void enableVerboseLogging(boolean verbose) { }
148 
getFactoryMacAddress()149     default String getFactoryMacAddress() {
150         return null;
151     }
152 
getConnectedWifiConfiguration()153     default WifiConfiguration getConnectedWifiConfiguration() {
154         return null;
155     }
156 
getConnectingWifiConfiguration()157     default WifiConfiguration getConnectingWifiConfiguration() {
158         return null;
159     }
160 
getConnectedBssid()161     default String getConnectedBssid() {
162         return null;
163     }
164 
getConnectingBssid()165     default String getConnectingBssid() {
166         return null;
167     }
168 
getWifiLinkLayerStats()169     default WifiLinkLayerStats getWifiLinkLayerStats() {
170         return null;
171     }
172 
setPowerSave(@owerSaveClientType int client, boolean ps)173     default boolean setPowerSave(@PowerSaveClientType int client, boolean ps) {
174         return false;
175     }
176 
enablePowerSave()177     default boolean enablePowerSave() {
178         return false;
179     }
180 
setLowLatencyMode(boolean enabled)181     default boolean setLowLatencyMode(boolean enabled) {
182         return false;
183     }
184 
getMcastLockManagerFilterController()185     default WifiMulticastLockManager.FilterController getMcastLockManagerFilterController() {
186         return new WifiMulticastLockManager.FilterController() {
187             @Override
188             public void startFilteringMulticastPackets() { }
189             @Override
190             public void stopFilteringMulticastPackets() { }
191         };
192     }
193 
isConnected()194     default boolean isConnected() {
195         return false;
196     }
197 
isConnecting()198     default boolean isConnecting() {
199         return false;
200     }
201 
isRoaming()202     default boolean isRoaming() {
203         return false;
204     }
205 
isDisconnected()206     default boolean isDisconnected() {
207         return true;
208     }
209 
isSupplicantTransientState()210     default boolean isSupplicantTransientState() {
211         return false;
212     }
213 
onCellularConnectivityChanged(@ifiDataStall.CellularDataStatusCode int status)214     default void onCellularConnectivityChanged(@WifiDataStall.CellularDataStatusCode int status) {}
215 
probeLink(ClientMode.LinkProbeCallback callback, int mcs)216     default void probeLink(ClientMode.LinkProbeCallback callback, int mcs) {
217         callback.onFailure(ClientMode.LinkProbeCallback.LINK_PROBE_ERROR_NOT_CONNECTED);
218     }
219 
sendMessageToClientModeImpl(Message msg)220     default void sendMessageToClientModeImpl(Message msg) { }
221 
setMboCellularDataStatus(boolean available)222     default void setMboCellularDataStatus(boolean available) { }
223 
getRoamingCapabilities()224     default WifiNative.RoamingCapabilities getRoamingCapabilities() {
225         return null;
226     }
227 
configureRoaming(WifiNative.RoamingConfig config)228     default boolean configureRoaming(WifiNative.RoamingConfig config) {
229         return false;
230     }
231 
enableRoaming(boolean enabled)232     default boolean enableRoaming(boolean enabled) {
233         return false;
234     }
235 
setCountryCode(String countryCode)236     default boolean setCountryCode(String countryCode) {
237         return false;
238     }
239 
getTxPktFates()240     default List<WifiNative.TxFateReport> getTxPktFates() {
241         return new ArrayList<>();
242     }
243 
getRxPktFates()244     default List<WifiNative.RxFateReport> getRxPktFates() {
245         return new ArrayList<>();
246     }
247 
getDeviceWiphyCapabilities()248     default DeviceWiphyCapabilities getDeviceWiphyCapabilities() {
249         return null;
250     }
251 
requestAnqp(String bssid, Set<Integer> anqpIds, Set<Integer> hs20Subtypes)252     default boolean requestAnqp(String bssid, Set<Integer> anqpIds, Set<Integer> hs20Subtypes) {
253         return false;
254     }
255 
requestVenueUrlAnqp(String bssid)256     default boolean requestVenueUrlAnqp(String bssid) {
257         return false;
258     }
259 
requestIcon(String bssid, String fileName)260     default boolean requestIcon(String bssid, String fileName) {
261         return false;
262     }
263 
264     @Override
setShouldReduceNetworkScore(boolean shouldReduceNetworkScore)265     default void setShouldReduceNetworkScore(boolean shouldReduceNetworkScore) { }
266 
267     @Override
updateCapabilities()268     default void updateCapabilities() { }
269 
270     @Override
isAffiliatedLinkBssid(MacAddress bssid)271     default boolean isAffiliatedLinkBssid(MacAddress bssid) {
272         return false;
273     }
274 
275     @Override
isMlo()276     default boolean isMlo() {
277         return false;
278     }
279 }
280