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.Network; 22 import android.net.wifi.IWifiConnectedNetworkScorer; 23 import android.net.wifi.WifiConfiguration; 24 import android.net.wifi.WifiInfo; 25 import android.net.wifi.WifiManager; 26 import android.net.wifi.hotspot2.IProvisioningCallback; 27 import android.net.wifi.hotspot2.OsuProvider; 28 import android.net.wifi.nl80211.DeviceWiphyCapabilities; 29 import android.os.IBinder; 30 import android.os.Message; 31 import android.os.WorkSource; 32 33 import com.android.server.wifi.util.ActionListenerWrapper; 34 35 import java.io.FileDescriptor; 36 import java.io.PrintWriter; 37 import java.util.ArrayList; 38 import java.util.List; 39 import java.util.Set; 40 41 /** 42 * Default implementations for {@link ClientMode} APIs. 43 */ 44 public interface ClientModeDefaults extends ClientMode { dump(FileDescriptor fd, PrintWriter pw, String[] args)45 default void dump(FileDescriptor fd, PrintWriter pw, String[] args) { } 46 connectNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper, int callingUid, @NonNull String packageName)47 default void connectNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper, 48 int callingUid, @NonNull String packageName) { 49 // wifi off, can't connect. 50 wrapper.sendFailure(WifiManager.ActionListener.FAILURE_BUSY); 51 } 52 saveNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper, int callingUid, @NonNull String packageName)53 default void saveNetwork(NetworkUpdateResult result, ActionListenerWrapper wrapper, 54 int callingUid, @NonNull String packageName) { 55 // wifi off, nothing more to do here. 56 wrapper.sendSuccess(); 57 } 58 disconnect()59 default void disconnect() { } 60 reconnect(WorkSource ws)61 default void reconnect(WorkSource ws) { } 62 reassociate()63 default void reassociate() { } 64 startConnectToNetwork(int networkId, int uid, String bssid)65 default void startConnectToNetwork(int networkId, int uid, String bssid) { } 66 startRoamToNetwork(int networkId, String bssid)67 default void startRoamToNetwork(int networkId, String bssid) { } 68 setWifiConnectedNetworkScorer( IBinder binder, IWifiConnectedNetworkScorer scorer)69 default boolean setWifiConnectedNetworkScorer( 70 IBinder binder, IWifiConnectedNetworkScorer scorer) { 71 // don't fail the public API when wifi is off. 72 return true; 73 } 74 clearWifiConnectedNetworkScorer()75 default void clearWifiConnectedNetworkScorer() { } 76 resetSimAuthNetworks(@lientModeImpl.ResetSimReason int resetReason)77 default void resetSimAuthNetworks(@ClientModeImpl.ResetSimReason int resetReason) { } 78 onBluetoothConnectionStateChanged()79 default void onBluetoothConnectionStateChanged() { } 80 syncRequestConnectionInfo()81 default WifiInfo syncRequestConnectionInfo() { 82 return new WifiInfo(); 83 } 84 syncQueryPasspointIcon(long bssid, String fileName)85 default boolean syncQueryPasspointIcon(long bssid, String fileName) { 86 return false; 87 } 88 syncGetCurrentNetwork()89 default Network syncGetCurrentNetwork() { 90 return null; 91 } 92 syncGetDhcpResultsParcelable()93 default DhcpResultsParcelable syncGetDhcpResultsParcelable() { 94 return new DhcpResultsParcelable(); 95 } 96 syncStartSubscriptionProvisioning(int callingUid, OsuProvider provider, IProvisioningCallback callback)97 default boolean syncStartSubscriptionProvisioning(int callingUid, OsuProvider provider, 98 IProvisioningCallback callback) { 99 return false; 100 } 101 enableTdls(String remoteMacAddress, boolean enable)102 default void enableTdls(String remoteMacAddress, boolean enable) { } 103 dumpIpClient(FileDescriptor fd, PrintWriter pw, String[] args)104 default void dumpIpClient(FileDescriptor fd, PrintWriter pw, String[] args) { } 105 dumpWifiScoreReport(FileDescriptor fd, PrintWriter pw, String[] args)106 default void dumpWifiScoreReport(FileDescriptor fd, PrintWriter pw, String[] args) { } 107 enableVerboseLogging(boolean verbose)108 default void enableVerboseLogging(boolean verbose) { } 109 getFactoryMacAddress()110 default String getFactoryMacAddress() { 111 return null; 112 } 113 getConnectedWifiConfiguration()114 default WifiConfiguration getConnectedWifiConfiguration() { 115 return null; 116 } 117 getConnectingWifiConfiguration()118 default WifiConfiguration getConnectingWifiConfiguration() { 119 return null; 120 } 121 getConnectedBssid()122 default String getConnectedBssid() { 123 return null; 124 } 125 getConnectingBssid()126 default String getConnectingBssid() { 127 return null; 128 } 129 getWifiLinkLayerStats()130 default WifiLinkLayerStats getWifiLinkLayerStats() { 131 return null; 132 } 133 setPowerSave(@owerSaveClientType int client, boolean ps)134 default boolean setPowerSave(@PowerSaveClientType int client, boolean ps) { 135 return false; 136 } 137 enablePowerSave()138 default boolean enablePowerSave() { 139 return false; 140 } 141 setLowLatencyMode(boolean enabled)142 default boolean setLowLatencyMode(boolean enabled) { 143 return false; 144 } 145 getMcastLockManagerFilterController()146 default WifiMulticastLockManager.FilterController getMcastLockManagerFilterController() { 147 return new WifiMulticastLockManager.FilterController() { 148 @Override 149 public void startFilteringMulticastPackets() { } 150 @Override 151 public void stopFilteringMulticastPackets() { } 152 }; 153 } 154 isConnected()155 default boolean isConnected() { 156 return false; 157 } 158 isConnecting()159 default boolean isConnecting() { 160 return false; 161 } 162 isRoaming()163 default boolean isRoaming() { 164 return false; 165 } 166 isDisconnected()167 default boolean isDisconnected() { 168 return true; 169 } 170 isSupplicantTransientState()171 default boolean isSupplicantTransientState() { 172 return false; 173 } 174 onCellularConnectivityChanged(@ifiDataStall.CellularDataStatusCode int status)175 default void onCellularConnectivityChanged(@WifiDataStall.CellularDataStatusCode int status) {} 176 probeLink(ClientMode.LinkProbeCallback callback, int mcs)177 default void probeLink(ClientMode.LinkProbeCallback callback, int mcs) { 178 callback.onFailure(ClientMode.LinkProbeCallback.LINK_PROBE_ERROR_NOT_CONNECTED); 179 } 180 sendMessageToClientModeImpl(Message msg)181 default void sendMessageToClientModeImpl(Message msg) { } 182 setMboCellularDataStatus(boolean available)183 default void setMboCellularDataStatus(boolean available) { } 184 getRoamingCapabilities()185 default WifiNative.RoamingCapabilities getRoamingCapabilities() { 186 return null; 187 } 188 configureRoaming(WifiNative.RoamingConfig config)189 default boolean configureRoaming(WifiNative.RoamingConfig config) { 190 return false; 191 } 192 enableRoaming(boolean enabled)193 default boolean enableRoaming(boolean enabled) { 194 return false; 195 } 196 setCountryCode(String countryCode)197 default boolean setCountryCode(String countryCode) { 198 return false; 199 } 200 getTxPktFates()201 default List<WifiNative.TxFateReport> getTxPktFates() { 202 return new ArrayList<>(); 203 } 204 getRxPktFates()205 default List<WifiNative.RxFateReport> getRxPktFates() { 206 return new ArrayList<>(); 207 } 208 getDeviceWiphyCapabilities()209 default DeviceWiphyCapabilities getDeviceWiphyCapabilities() { 210 return null; 211 } 212 requestAnqp(String bssid, Set<Integer> anqpIds, Set<Integer> hs20Subtypes)213 default boolean requestAnqp(String bssid, Set<Integer> anqpIds, Set<Integer> hs20Subtypes) { 214 return false; 215 } 216 requestVenueUrlAnqp(String bssid)217 default boolean requestVenueUrlAnqp(String bssid) { 218 return false; 219 } 220 requestIcon(String bssid, String fileName)221 default boolean requestIcon(String bssid, String fileName) { 222 return false; 223 } 224 225 @Override setShouldReduceNetworkScore(boolean shouldReduceNetworkScore)226 default void setShouldReduceNetworkScore(boolean shouldReduceNetworkScore) { } 227 228 @Override updateCapabilities()229 default void updateCapabilities() { } 230 } 231