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