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