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