1 /**
2  * Copyright (c) 2008, 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 android.net.wifi;
18 
19 import android.net.wifi.hotspot2.OsuProvider;
20 import android.net.wifi.hotspot2.PasspointConfiguration;
21 import android.net.wifi.hotspot2.IProvisioningCallback;
22 
23 import android.net.DhcpInfo;
24 import android.net.Network;
25 import android.net.wifi.CoexUnsafeChannel;
26 import android.net.wifi.IActionListener;
27 import android.net.wifi.ICoexCallback;
28 import android.net.wifi.IDppCallback;
29 import android.net.wifi.ILocalOnlyHotspotCallback;
30 import android.net.wifi.INetworkRequestMatchCallback;
31 import android.net.wifi.IOnWifiActivityEnergyInfoListener;
32 import android.net.wifi.IOnWifiUsabilityStatsListener;
33 import android.net.wifi.IScanResultsCallback;
34 import android.net.wifi.ISoftApCallback;
35 import android.net.wifi.ISubsystemRestartCallback;
36 import android.net.wifi.ISuggestionConnectionStatusListener;
37 import android.net.wifi.ISuggestionUserApprovalStatusListener;
38 import android.net.wifi.ITrafficStateCallback;
39 import android.net.wifi.IWifiConnectedNetworkScorer;
40 import android.net.wifi.IWifiVerboseLoggingStatusChangedListener;
41 import android.net.wifi.ScanResult;
42 import android.net.wifi.SoftApConfiguration;
43 import android.net.wifi.WifiAvailableChannel;
44 import android.net.wifi.WifiConfiguration;
45 import android.net.wifi.WifiInfo;
46 import android.net.wifi.WifiManager;
47 import android.net.wifi.WifiNetworkSuggestion;
48 
49 import android.os.Messenger;
50 import android.os.ResultReceiver;
51 import android.os.WorkSource;
52 
53 import com.android.modules.utils.ParceledListSlice;
54 
55 /**
56  * Interface that allows controlling and querying Wi-Fi connectivity.
57  *
58  * {@hide}
59  */
60 interface IWifiManager
61 {
getSupportedFeatures()62     long getSupportedFeatures();
63 
getWifiActivityEnergyInfoAsync(in IOnWifiActivityEnergyInfoListener listener)64     oneway void getWifiActivityEnergyInfoAsync(in IOnWifiActivityEnergyInfoListener listener);
65 
getConfiguredNetworks(String packageName, String featureId, boolean callerNetworksOnly)66     ParceledListSlice getConfiguredNetworks(String packageName, String featureId, boolean callerNetworksOnly);
67 
getPrivilegedConfiguredNetworks(String packageName, String featureId)68     ParceledListSlice getPrivilegedConfiguredNetworks(String packageName, String featureId);
69 
getAllMatchingFqdnsForScanResults(in List<ScanResult> scanResult)70     Map getAllMatchingFqdnsForScanResults(in List<ScanResult> scanResult);
71 
getMatchingOsuProviders(in List<ScanResult> scanResult)72     Map getMatchingOsuProviders(in List<ScanResult> scanResult);
73 
getMatchingPasspointConfigsForOsuProviders(in List<OsuProvider> osuProviders)74     Map getMatchingPasspointConfigsForOsuProviders(in List<OsuProvider> osuProviders);
75 
addOrUpdateNetwork(in WifiConfiguration config, String packageName)76     int addOrUpdateNetwork(in WifiConfiguration config, String packageName);
77 
addOrUpdateNetworkPrivileged(in WifiConfiguration config, String packageName)78     WifiManager.AddNetworkResult addOrUpdateNetworkPrivileged(in WifiConfiguration config, String packageName);
79 
addOrUpdatePasspointConfiguration(in PasspointConfiguration config, String packageName)80     boolean addOrUpdatePasspointConfiguration(in PasspointConfiguration config, String packageName);
81 
removePasspointConfiguration(in String fqdn, String packageName)82     boolean removePasspointConfiguration(in String fqdn, String packageName);
83 
getPasspointConfigurations(in String packageName)84     List<PasspointConfiguration> getPasspointConfigurations(in String packageName);
85 
getWifiConfigsForPasspointProfiles(in List<String> fqdnList)86     List<WifiConfiguration> getWifiConfigsForPasspointProfiles(in List<String> fqdnList);
87 
queryPasspointIcon(long bssid, String fileName)88     void queryPasspointIcon(long bssid, String fileName);
89 
matchProviderWithCurrentNetwork(String fqdn)90     int matchProviderWithCurrentNetwork(String fqdn);
91 
removeNetwork(int netId, String packageName)92     boolean removeNetwork(int netId, String packageName);
93 
removeNonCallerConfiguredNetworks(String packageName)94     boolean removeNonCallerConfiguredNetworks(String packageName);
95 
enableNetwork(int netId, boolean disableOthers, String packageName)96     boolean enableNetwork(int netId, boolean disableOthers, String packageName);
97 
disableNetwork(int netId, String packageName)98     boolean disableNetwork(int netId, String packageName);
99 
allowAutojoinGlobal(boolean choice)100     void allowAutojoinGlobal(boolean choice);
101 
allowAutojoin(int netId, boolean choice)102     void allowAutojoin(int netId, boolean choice);
103 
allowAutojoinPasspoint(String fqdn, boolean enableAutoJoin)104     void allowAutojoinPasspoint(String fqdn, boolean enableAutoJoin);
105 
setMacRandomizationSettingPasspointEnabled(String fqdn, boolean enable)106     void setMacRandomizationSettingPasspointEnabled(String fqdn, boolean enable);
107 
setPasspointMeteredOverride(String fqdn, int meteredOverride)108     void setPasspointMeteredOverride(String fqdn, int meteredOverride);
109 
startScan(String packageName, String featureId)110     boolean startScan(String packageName, String featureId);
111 
getScanResults(String callingPackage, String callingFeatureId)112     List<ScanResult> getScanResults(String callingPackage, String callingFeatureId);
113 
disconnect(String packageName)114     boolean disconnect(String packageName);
115 
reconnect(String packageName)116     boolean reconnect(String packageName);
117 
reassociate(String packageName)118     boolean reassociate(String packageName);
119 
getConnectionInfo(String callingPackage, String callingFeatureId)120     WifiInfo getConnectionInfo(String callingPackage, String callingFeatureId);
121 
setWifiEnabled(String packageName, boolean enable)122     boolean setWifiEnabled(String packageName, boolean enable);
123 
getWifiEnabledState()124     int getWifiEnabledState();
125 
getCountryCode()126     String getCountryCode();
127 
setOverrideCountryCode(String country)128     void setOverrideCountryCode(String country);
129 
clearOverrideCountryCode()130     void clearOverrideCountryCode();
131 
setDefaultCountryCode(String country)132     void setDefaultCountryCode(String country);
133 
is24GHzBandSupported()134     boolean is24GHzBandSupported();
135 
is5GHzBandSupported()136     boolean is5GHzBandSupported();
137 
is6GHzBandSupported()138     boolean is6GHzBandSupported();
139 
is60GHzBandSupported()140     boolean is60GHzBandSupported();
141 
isWifiStandardSupported(int standard)142     boolean isWifiStandardSupported(int standard);
143 
getDhcpInfo(String packageName)144     DhcpInfo getDhcpInfo(String packageName);
145 
setScanAlwaysAvailable(boolean isAvailable, String packageName)146     void setScanAlwaysAvailable(boolean isAvailable, String packageName);
147 
isScanAlwaysAvailable()148     boolean isScanAlwaysAvailable();
149 
acquireWifiLock(IBinder lock, int lockType, String tag, in WorkSource ws)150     boolean acquireWifiLock(IBinder lock, int lockType, String tag, in WorkSource ws);
151 
updateWifiLockWorkSource(IBinder lock, in WorkSource ws)152     void updateWifiLockWorkSource(IBinder lock, in WorkSource ws);
153 
releaseWifiLock(IBinder lock)154     boolean releaseWifiLock(IBinder lock);
155 
initializeMulticastFiltering()156     void initializeMulticastFiltering();
157 
isMulticastEnabled()158     boolean isMulticastEnabled();
159 
acquireMulticastLock(IBinder binder, String tag)160     void acquireMulticastLock(IBinder binder, String tag);
161 
releaseMulticastLock(String tag)162     void releaseMulticastLock(String tag);
163 
updateInterfaceIpState(String ifaceName, int mode)164     void updateInterfaceIpState(String ifaceName, int mode);
165 
isDefaultCoexAlgorithmEnabled()166     boolean isDefaultCoexAlgorithmEnabled();
167 
setCoexUnsafeChannels(in List<CoexUnsafeChannel> unsafeChannels, int mandatoryRestrictions)168     void setCoexUnsafeChannels(in List<CoexUnsafeChannel> unsafeChannels, int mandatoryRestrictions);
169 
registerCoexCallback(in ICoexCallback callback)170     void registerCoexCallback(in ICoexCallback callback);
171 
unregisterCoexCallback(in ICoexCallback callback)172     void unregisterCoexCallback(in ICoexCallback callback);
173 
startSoftAp(in WifiConfiguration wifiConfig, String packageName)174     boolean startSoftAp(in WifiConfiguration wifiConfig, String packageName);
175 
startTetheredHotspot(in SoftApConfiguration softApConfig, String packageName)176     boolean startTetheredHotspot(in SoftApConfiguration softApConfig, String packageName);
177 
stopSoftAp()178     boolean stopSoftAp();
179 
startLocalOnlyHotspot(in ILocalOnlyHotspotCallback callback, String packageName, String featureId, in SoftApConfiguration customConfig)180     int startLocalOnlyHotspot(in ILocalOnlyHotspotCallback callback, String packageName,
181                               String featureId, in SoftApConfiguration customConfig);
182 
stopLocalOnlyHotspot()183     void stopLocalOnlyHotspot();
184 
startWatchLocalOnlyHotspot(in ILocalOnlyHotspotCallback callback)185     void startWatchLocalOnlyHotspot(in ILocalOnlyHotspotCallback callback);
186 
stopWatchLocalOnlyHotspot()187     void stopWatchLocalOnlyHotspot();
188 
189     @UnsupportedAppUsage
getWifiApEnabledState()190     int getWifiApEnabledState();
191 
192     @UnsupportedAppUsage
getWifiApConfiguration()193     WifiConfiguration getWifiApConfiguration();
194 
getSoftApConfiguration()195     SoftApConfiguration getSoftApConfiguration();
196 
setWifiApConfiguration(in WifiConfiguration wifiConfig, String packageName)197     boolean setWifiApConfiguration(in WifiConfiguration wifiConfig, String packageName);
198 
setSoftApConfiguration(in SoftApConfiguration softApConfig, String packageName)199     boolean setSoftApConfiguration(in SoftApConfiguration softApConfig, String packageName);
200 
notifyUserOfApBandConversion(String packageName)201     void notifyUserOfApBandConversion(String packageName);
202 
enableTdls(String remoteIPAddress, boolean enable)203     void enableTdls(String remoteIPAddress, boolean enable);
204 
enableTdlsWithMacAddress(String remoteMacAddress, boolean enable)205     void enableTdlsWithMacAddress(String remoteMacAddress, boolean enable);
206 
getCurrentNetworkWpsNfcConfigurationToken()207     String getCurrentNetworkWpsNfcConfigurationToken();
208 
enableVerboseLogging(int verbose)209     void enableVerboseLogging(int verbose);
210 
getVerboseLoggingLevel()211     int getVerboseLoggingLevel();
212 
disableEphemeralNetwork(String SSID, String packageName)213     void disableEphemeralNetwork(String SSID, String packageName);
214 
factoryReset(String packageName)215     void factoryReset(String packageName);
216 
217     @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
getCurrentNetwork()218     Network getCurrentNetwork();
219 
retrieveBackupData()220     byte[] retrieveBackupData();
221 
restoreBackupData(in byte[] data)222     void restoreBackupData(in byte[] data);
223 
retrieveSoftApBackupData()224     byte[] retrieveSoftApBackupData();
225 
restoreSoftApBackupData(in byte[] data)226     SoftApConfiguration restoreSoftApBackupData(in byte[] data);
227 
restoreSupplicantBackupData(in byte[] supplicantData, in byte[] ipConfigData)228     void restoreSupplicantBackupData(in byte[] supplicantData, in byte[] ipConfigData);
229 
startSubscriptionProvisioning(in OsuProvider provider, in IProvisioningCallback callback)230     void startSubscriptionProvisioning(in OsuProvider provider, in IProvisioningCallback callback);
231 
registerSoftApCallback(in ISoftApCallback callback)232     void registerSoftApCallback(in ISoftApCallback callback);
233 
unregisterSoftApCallback(in ISoftApCallback callback)234     void unregisterSoftApCallback(in ISoftApCallback callback);
235 
addWifiVerboseLoggingStatusChangedListener(in IWifiVerboseLoggingStatusChangedListener listener)236     void addWifiVerboseLoggingStatusChangedListener(in IWifiVerboseLoggingStatusChangedListener listener);
237 
removeWifiVerboseLoggingStatusChangedListener(in IWifiVerboseLoggingStatusChangedListener listener)238     void removeWifiVerboseLoggingStatusChangedListener(in IWifiVerboseLoggingStatusChangedListener listener);
239 
addOnWifiUsabilityStatsListener(in IOnWifiUsabilityStatsListener listener)240     void addOnWifiUsabilityStatsListener(in IOnWifiUsabilityStatsListener listener);
241 
removeOnWifiUsabilityStatsListener(in IOnWifiUsabilityStatsListener listener)242     void removeOnWifiUsabilityStatsListener(in IOnWifiUsabilityStatsListener listener);
243 
registerTrafficStateCallback(in ITrafficStateCallback callback)244     void registerTrafficStateCallback(in ITrafficStateCallback callback);
245 
unregisterTrafficStateCallback(in ITrafficStateCallback callback)246     void unregisterTrafficStateCallback(in ITrafficStateCallback callback);
247 
registerNetworkRequestMatchCallback(in INetworkRequestMatchCallback callback)248     void registerNetworkRequestMatchCallback(in INetworkRequestMatchCallback callback);
249 
unregisterNetworkRequestMatchCallback(in INetworkRequestMatchCallback callback)250     void unregisterNetworkRequestMatchCallback(in INetworkRequestMatchCallback callback);
251 
addNetworkSuggestions(in List<WifiNetworkSuggestion> networkSuggestions, in String packageName, in String featureId)252     int addNetworkSuggestions(in List<WifiNetworkSuggestion> networkSuggestions, in String packageName,
253         in String featureId);
254 
removeNetworkSuggestions(in List<WifiNetworkSuggestion> networkSuggestions, in String packageName)255     int removeNetworkSuggestions(in List<WifiNetworkSuggestion> networkSuggestions, in String packageName);
256 
getNetworkSuggestions(in String packageName)257     List<WifiNetworkSuggestion> getNetworkSuggestions(in String packageName);
258 
getFactoryMacAddresses()259     String[] getFactoryMacAddresses();
260 
setDeviceMobilityState(int state)261     void setDeviceMobilityState(int state);
262 
startDppAsConfiguratorInitiator(in IBinder binder, in String packageName, in String enrolleeUri, int selectedNetworkId, int netRole, in IDppCallback callback)263     void startDppAsConfiguratorInitiator(in IBinder binder, in String packageName,
264         in String enrolleeUri, int selectedNetworkId, int netRole, in IDppCallback callback);
265 
startDppAsEnrolleeInitiator(in IBinder binder, in String configuratorUri, in IDppCallback callback)266     void startDppAsEnrolleeInitiator(in IBinder binder, in String configuratorUri,
267         in IDppCallback callback);
268 
startDppAsEnrolleeResponder(in IBinder binder, in String deviceInfo, int curve, in IDppCallback callback)269     void startDppAsEnrolleeResponder(in IBinder binder, in String deviceInfo, int curve,
270         in IDppCallback callback);
271 
stopDppSession()272     void stopDppSession();
273 
updateWifiUsabilityScore(int seqNum, int score, int predictionHorizonSec)274     void updateWifiUsabilityScore(int seqNum, int score, int predictionHorizonSec);
275 
connect(in WifiConfiguration config, int netId, in IActionListener listener)276     oneway void connect(in WifiConfiguration config, int netId, in IActionListener listener);
277 
save(in WifiConfiguration config, in IActionListener listener)278     oneway void save(in WifiConfiguration config, in IActionListener listener);
279 
forget(int netId, in IActionListener listener)280     oneway void forget(int netId, in IActionListener listener);
281 
registerScanResultsCallback(in IScanResultsCallback callback)282     void registerScanResultsCallback(in IScanResultsCallback callback);
283 
unregisterScanResultsCallback(in IScanResultsCallback callback)284     void unregisterScanResultsCallback(in IScanResultsCallback callback);
285 
registerSuggestionConnectionStatusListener(in ISuggestionConnectionStatusListener listener, String packageName, String featureId)286     void registerSuggestionConnectionStatusListener(in ISuggestionConnectionStatusListener listener, String packageName, String featureId);
287 
unregisterSuggestionConnectionStatusListener(in ISuggestionConnectionStatusListener listener, String packageName)288     void unregisterSuggestionConnectionStatusListener(in ISuggestionConnectionStatusListener listener, String packageName);
289 
calculateSignalLevel(int rssi)290     int calculateSignalLevel(int rssi);
291 
getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(in List<ScanResult> scanResults)292     List<WifiConfiguration> getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(in List<ScanResult> scanResults);
293 
setWifiConnectedNetworkScorer(in IBinder binder, in IWifiConnectedNetworkScorer scorer)294     boolean setWifiConnectedNetworkScorer(in IBinder binder, in IWifiConnectedNetworkScorer scorer);
295 
clearWifiConnectedNetworkScorer()296     void clearWifiConnectedNetworkScorer();
297 
298     /**
299      * Return the Map of {@link WifiNetworkSuggestion} and the list of <ScanResult>
300      */
getMatchingScanResults(in List<WifiNetworkSuggestion> networkSuggestions, in List<ScanResult> scanResults, String callingPackage, String callingFeatureId)301     Map getMatchingScanResults(in List<WifiNetworkSuggestion> networkSuggestions, in List<ScanResult> scanResults, String callingPackage, String callingFeatureId);
302 
setScanThrottleEnabled(boolean enable)303     void setScanThrottleEnabled(boolean enable);
304 
isScanThrottleEnabled()305     boolean isScanThrottleEnabled();
306 
getAllMatchingPasspointProfilesForScanResults(in List<ScanResult> scanResult)307     Map getAllMatchingPasspointProfilesForScanResults(in List<ScanResult> scanResult);
308 
setAutoWakeupEnabled(boolean enable)309     void setAutoWakeupEnabled(boolean enable);
310 
isAutoWakeupEnabled()311     boolean isAutoWakeupEnabled();
312 
startRestrictingAutoJoinToSubscriptionId(int subId)313     void startRestrictingAutoJoinToSubscriptionId(int subId);
314 
stopRestrictingAutoJoinToSubscriptionId()315     void stopRestrictingAutoJoinToSubscriptionId();
316 
setCarrierNetworkOffloadEnabled(int subscriptionId, boolean merged, boolean enabled)317     void setCarrierNetworkOffloadEnabled(int subscriptionId, boolean merged, boolean enabled);
318 
isCarrierNetworkOffloadEnabled(int subscriptionId, boolean merged)319     boolean isCarrierNetworkOffloadEnabled(int subscriptionId, boolean merged);
320 
registerSubsystemRestartCallback(in ISubsystemRestartCallback callback)321     void registerSubsystemRestartCallback(in ISubsystemRestartCallback callback);
322 
unregisterSubsystemRestartCallback(in ISubsystemRestartCallback callback)323     void unregisterSubsystemRestartCallback(in ISubsystemRestartCallback callback);
324 
restartWifiSubsystem()325     void restartWifiSubsystem();
326 
addSuggestionUserApprovalStatusListener(in ISuggestionUserApprovalStatusListener listener, String packageName)327     void addSuggestionUserApprovalStatusListener(in ISuggestionUserApprovalStatusListener listener, String packageName);
328 
removeSuggestionUserApprovalStatusListener(in ISuggestionUserApprovalStatusListener listener, String packageName)329     void removeSuggestionUserApprovalStatusListener(in ISuggestionUserApprovalStatusListener listener, String packageName);
330 
setEmergencyScanRequestInProgress(boolean inProgress)331     void setEmergencyScanRequestInProgress(boolean inProgress);
332 
removeAppState(int targetAppUid, String targetApppackageName)333     void removeAppState(int targetAppUid, String targetApppackageName);
334 
setWifiScoringEnabled(boolean enabled)335     boolean setWifiScoringEnabled(boolean enabled);
336 
flushPasspointAnqpCache(String packageName)337     void flushPasspointAnqpCache(String packageName);
338 
getUsableChannels(int band, int mode, int filter)339     List<WifiAvailableChannel> getUsableChannels(int band, int mode, int filter);
340 }
341