diff options
author | Etan Cohen <etancohen@google.com> | 2019-12-20 03:58:09 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-12-20 03:58:09 +0000 |
commit | 6567c9020323a8c7774616616a20bc1997988ba6 (patch) | |
tree | a3f2fe65b97bdc8528ba2fba3dbf92b3c500eb35 /service | |
parent | 1b6e03b0b29a06880e2e6632c8095c9016b75d34 (diff) | |
parent | 3123395d25a89ae1db9a037dce38a7f38936692c (diff) |
Merge "[WIFICOND] Formalize the wificond AIDL interface"
Diffstat (limited to 'service')
7 files changed, 59 insertions, 84 deletions
diff --git a/service/java/com/android/server/wifi/ClientModeImpl.java b/service/java/com/android/server/wifi/ClientModeImpl.java index f081633ad..3542cf63f 100644 --- a/service/java/com/android/server/wifi/ClientModeImpl.java +++ b/service/java/com/android/server/wifi/ClientModeImpl.java @@ -63,7 +63,6 @@ import android.net.wifi.INetworkRequestMatchCallback; import android.net.wifi.ITxPacketCountListener; import android.net.wifi.ScanResult; import android.net.wifi.SupplicantState; -import android.net.wifi.WifiCondManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiEnterpriseConfig; import android.net.wifi.WifiInfo; @@ -73,6 +72,7 @@ import android.net.wifi.WifiNetworkAgentSpecifier; import android.net.wifi.hotspot2.IProvisioningCallback; import android.net.wifi.hotspot2.OsuProvider; import android.net.wifi.p2p.WifiP2pManager; +import android.net.wifi.wificond.WifiCondManager; import android.os.BatteryStatsManager; import android.os.Bundle; import android.os.ConditionVariable; @@ -2253,10 +2253,10 @@ public class ClientModeImpl extends StateMachine { return; } - int newRssi = pollResult.currentRssi; - int newTxLinkSpeed = pollResult.txBitrate; - int newFrequency = pollResult.associationFrequency; - int newRxLinkSpeed = pollResult.rxBitrate; + int newRssi = pollResult.currentRssiDbm; + int newTxLinkSpeed = pollResult.txBitrateMbps; + int newFrequency = pollResult.associationFrequencyMHz; + int newRxLinkSpeed = pollResult.rxBitrateMbps; if (mVerboseLoggingEnabled) { logd("fetchRssiLinkSpeedAndFrequencyNative rssi=" + newRssi @@ -4507,8 +4507,8 @@ public class ClientModeImpl extends StateMachine { WifiCondManager.TxPacketCounters counters = mWifiNative.getTxPacketCounters(mInterfaceName); if (counters != null) { - sendTxPacketCountListenerSuccess( - callbackIdentifier, counters.txSucceeded + counters.txFailed); + sendTxPacketCountListenerSuccess(callbackIdentifier, + counters.txPacketSucceeded + counters.txPacketFailed); } else { sendTxPacketCountListenerSuccess(callbackIdentifier, WifiManager.ERROR); } diff --git a/service/java/com/android/server/wifi/LinkProbeManager.java b/service/java/com/android/server/wifi/LinkProbeManager.java index f0af3a458..58c0f7b5b 100644 --- a/service/java/com/android/server/wifi/LinkProbeManager.java +++ b/service/java/com/android/server/wifi/LinkProbeManager.java @@ -19,8 +19,8 @@ package com.android.server.wifi; import android.content.Context; import android.database.ContentObserver; import android.net.MacAddress; -import android.net.wifi.WifiCondManager; import android.net.wifi.WifiInfo; +import android.net.wifi.wificond.WifiCondManager; import android.os.Handler; import android.provider.Settings; import android.util.Log; diff --git a/service/java/com/android/server/wifi/SoftApManager.java b/service/java/com/android/server/wifi/SoftApManager.java index 7be1e5f11..03e1441f3 100644 --- a/service/java/com/android/server/wifi/SoftApManager.java +++ b/service/java/com/android/server/wifi/SoftApManager.java @@ -25,10 +25,10 @@ import android.content.Context; import android.content.Intent; import android.database.ContentObserver; import android.net.MacAddress; -import android.net.wifi.IApInterfaceEventCallback; import android.net.wifi.ScanResult; import android.net.wifi.SoftApConfiguration; import android.net.wifi.SoftApInfo; +import android.net.wifi.WifiAnnotations; import android.net.wifi.WifiClient; import android.net.wifi.WifiManager; import android.net.wifi.wificond.NativeWifiClient; @@ -133,7 +133,8 @@ public class SoftApManager implements ActiveModeManager { } @Override - public void onSoftApChannelSwitched(int frequency, int bandwidth) { + public void onSoftApChannelSwitched(int frequency, + @WifiAnnotations.Bandwidth int bandwidth) { mStateMachine.sendMessage( SoftApStateMachine.CMD_SOFT_AP_CHANNEL_SWITCHED, frequency, bandwidth); } @@ -550,7 +551,7 @@ public class SoftApManager implements ActiveModeManager { /** * Set stations associated with this soft AP - * @param clients The connected stations + * @param client The connected station */ private void updateConnectedClients(WifiClient client, boolean isConnected) { if (client == null) { @@ -605,37 +606,9 @@ public class SoftApManager implements ActiveModeManager { return clients; } - private void setSoftApChannel(int freq, int bandwidth) { - int apBandwidth; - + private void setSoftApChannel(int freq, @WifiAnnotations.Bandwidth int apBandwidth) { Log.d(TAG, "Channel switched. Frequency: " + freq - + " Bandwidth: " + bandwidth); - switch(bandwidth) { - case IApInterfaceEventCallback.BANDWIDTH_INVALID: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_INVALID; - break; - case IApInterfaceEventCallback.BANDWIDTH_20_NOHT: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_20MHZ_NOHT; - break; - case IApInterfaceEventCallback.BANDWIDTH_20: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_20MHZ; - break; - case IApInterfaceEventCallback.BANDWIDTH_40: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_40MHZ; - break; - case IApInterfaceEventCallback.BANDWIDTH_80: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_80MHZ; - break; - case IApInterfaceEventCallback.BANDWIDTH_80P80: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_80MHZ_PLUS_MHZ; - break; - case IApInterfaceEventCallback.BANDWIDTH_160: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_160MHZ; - break; - default: - apBandwidth = SoftApInfo.CHANNEL_WIDTH_INVALID; - break; - } + + " Bandwidth: " + apBandwidth); if (freq == mCurrentSoftApInfo.getFrequency() && apBandwidth == mCurrentSoftApInfo.getBandwidth()) { diff --git a/service/java/com/android/server/wifi/WifiInjector.java b/service/java/com/android/server/wifi/WifiInjector.java index 03428a559..080b76d9e 100644 --- a/service/java/com/android/server/wifi/WifiInjector.java +++ b/service/java/com/android/server/wifi/WifiInjector.java @@ -27,9 +27,9 @@ import android.net.NetworkCapabilities; import android.net.NetworkKey; import android.net.NetworkScoreManager; import android.net.wifi.IWifiScanner; -import android.net.wifi.WifiCondManager; import android.net.wifi.WifiManager; import android.net.wifi.WifiScanner; +import android.net.wifi.wificond.WifiCondManager; import android.os.BatteryStatsManager; import android.os.Handler; import android.os.HandlerExecutor; diff --git a/service/java/com/android/server/wifi/WifiMetrics.java b/service/java/com/android/server/wifi/WifiMetrics.java index 88a30360a..1a0a13d35 100644 --- a/service/java/com/android/server/wifi/WifiMetrics.java +++ b/service/java/com/android/server/wifi/WifiMetrics.java @@ -25,7 +25,6 @@ import android.net.wifi.EAPConstants; import android.net.wifi.IOnWifiUsabilityStatsListener; import android.net.wifi.ScanResult; import android.net.wifi.SupplicantState; -import android.net.wifi.WifiCondManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; @@ -33,6 +32,7 @@ import android.net.wifi.WifiManager.DeviceMobilityState; import android.net.wifi.WifiUsabilityStatsEntry.ProbeStatus; import android.net.wifi.hotspot2.PasspointConfiguration; import android.net.wifi.hotspot2.ProvisioningCallback; +import android.net.wifi.wificond.WifiCondManager; import android.os.Handler; import android.os.IBinder; import android.os.Looper; diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index c93f6588d..d8e674384 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -26,12 +26,12 @@ import android.net.apf.ApfCapabilities; import android.net.wifi.ScanResult; import android.net.wifi.SoftApConfiguration; import android.net.wifi.WifiAnnotations; -import android.net.wifi.WifiCondManager; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiScanner; import android.net.wifi.WifiSsid; import android.net.wifi.wificond.NativeScanResult; import android.net.wifi.wificond.RadioChainInfo; +import android.net.wifi.wificond.WifiCondManager; import android.os.Handler; import android.os.SystemClock; import android.text.TextUtils; @@ -125,7 +125,7 @@ public class WifiNative { /** * Callbacks for SoftAp interface. */ - public interface SoftApListener extends WifiCondManager.SoftApListener { + public interface SoftApListener extends WifiCondManager.SoftApCallback { // dummy for now - provide a shell so that clients don't use a WifiCondManager-specific API. } @@ -1012,7 +1012,7 @@ public class WifiNative { mWifiMetrics.incrementNumSetupClientInterfaceFailureDueToHal(); return null; } - if (!mWifiCondManager.setupInterfaceForClientMode(iface.name, + if (!mWifiCondManager.setupInterfaceForClientMode(iface.name, Runnable::run, new NormalScanEventCallback(iface.name), new PnoScanEventCallback(iface.name))) { Log.e(TAG, "Failed to setup iface in wificond on " + iface); @@ -1074,7 +1074,7 @@ public class WifiNative { mWifiMetrics.incrementNumSetupClientInterfaceFailureDueToHal(); return null; } - if (!mWifiCondManager.setupInterfaceForClientMode(iface.name, + if (!mWifiCondManager.setupInterfaceForClientMode(iface.name, Runnable::run, new NormalScanEventCallback(iface.name), new PnoScanEventCallback(iface.name))) { Log.e(TAG, "Failed to setup iface in wificond=" + iface.name); @@ -1388,7 +1388,7 @@ public class WifiNative { * The result depends on the on the country code that has been set. * * @param band as specified by one of the WifiScanner.WIFI_BAND_* constants. - * The following bands are supported {@link WifiBandBasic}: + * The following bands are supported {@link WifiAnnotations.WifiBandBasic}: * WifiScanner.WIFI_BAND_24_GHZ * WifiScanner.WIFI_BAND_5_GHZ * WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY @@ -1397,7 +1397,7 @@ public class WifiNative { * @throws IllegalArgumentException if band is not recognized. */ public int [] getChannelsForBand(@WifiAnnotations.WifiBandBasic int band) { - return mWifiCondManager.getChannelsForBand(band); + return mWifiCondManager.getChannelsMhzForBand(band); } /** @@ -1423,7 +1423,7 @@ public class WifiNative { continue; } } - return mWifiCondManager.scan(ifaceName, scanType, freqs, hiddenNetworkSsidsArrays); + return mWifiCondManager.startScan(ifaceName, scanType, freqs, hiddenNetworkSsidsArrays); } /** @@ -1451,12 +1451,12 @@ public class WifiNative { private ArrayList<ScanDetail> convertNativeScanResults(List<NativeScanResult> nativeResults) { ArrayList<ScanDetail> results = new ArrayList<>(); for (NativeScanResult result : nativeResults) { - WifiSsid wifiSsid = WifiSsid.createFromByteArray(result.ssid); + WifiSsid wifiSsid = WifiSsid.createFromByteArray(result.getSsid()); String bssid; try { - bssid = NativeUtil.macAddressFromByteArray(result.bssid); + bssid = NativeUtil.macAddressFromByteArray(result.getBssid()); } catch (IllegalArgumentException e) { - Log.e(TAG, "Illegal argument " + result.bssid, e); + Log.e(TAG, "Illegal argument " + result.getBssid(), e); continue; } if (bssid == null) { @@ -1467,33 +1467,31 @@ public class WifiNative { InformationElementUtil.parseInformationElements(result.infoElement); InformationElementUtil.Capabilities capabilities = new InformationElementUtil.Capabilities(); - capabilities.from(ies, result.capability, isEnhancedOpenSupported()); + capabilities.from(ies, result.getCapabilities(), isEnhancedOpenSupported()); String flags = capabilities.generateCapabilitiesString(); NetworkDetail networkDetail; try { - networkDetail = new NetworkDetail(bssid, ies, null, result.frequency); + networkDetail = new NetworkDetail(bssid, ies, null, result.getFrequencyMhz()); } catch (IllegalArgumentException e) { Log.e(TAG, "Illegal argument for scan result with bssid: " + bssid, e); continue; } ScanDetail scanDetail = new ScanDetail(networkDetail, wifiSsid, bssid, flags, - result.signalMbm / 100, result.frequency, result.tsf, ies, null, - result.infoElement); + result.getSignalMbm() / 100, result.getFrequencyMhz(), result.getTsf(), ies, + null, result.getInformationElements()); ScanResult scanResult = scanDetail.getScanResult(); scanResult.setWifiStandard(networkDetail.getWifiMode()); // Fill up the radio chain info. - if (result.radioChainInfos != null) { - scanResult.radioChainInfos = - new ScanResult.RadioChainInfo[result.radioChainInfos.size()]; - int idx = 0; - for (RadioChainInfo nativeRadioChainInfo : result.radioChainInfos) { - scanResult.radioChainInfos[idx] = new ScanResult.RadioChainInfo(); - scanResult.radioChainInfos[idx].id = nativeRadioChainInfo.chainId; - scanResult.radioChainInfos[idx].level = nativeRadioChainInfo.level; - idx++; - } + scanResult.radioChainInfos = + new ScanResult.RadioChainInfo[result.getRadioChainInfos().size()]; + int idx = 0; + for (RadioChainInfo nativeRadioChainInfo : result.getRadioChainInfos()) { + scanResult.radioChainInfos[idx] = new ScanResult.RadioChainInfo(); + scanResult.radioChainInfos[idx].id = nativeRadioChainInfo.getChainId(); + scanResult.radioChainInfos[idx].level = nativeRadioChainInfo.getLevelDbm(); + idx++; } results.add(scanDetail); } @@ -1536,6 +1534,7 @@ public class WifiNative { */ public boolean startPnoScan(@NonNull String ifaceName, PnoSettings pnoSettings) { return mWifiCondManager.startPnoScan(ifaceName, pnoSettings.toNativePnoSettings(), + Runnable::run, new WifiCondManager.PnoScanRequestCallback() { @Override public void onPnoRequestSucceeded() { @@ -1575,7 +1574,7 @@ public class WifiNative { */ public void sendMgmtFrame(@NonNull String ifaceName, @NonNull byte[] frame, @NonNull WifiCondManager.SendMgmtFrameCallback callback, int mcs) { - mWifiCondManager.sendMgmtFrame(ifaceName, frame, callback, mcs); + mWifiCondManager.sendMgmtFrame(ifaceName, frame, mcs, Runnable::run, callback); } /** @@ -1710,11 +1709,11 @@ public class WifiNative { */ public boolean startSoftAp( @NonNull String ifaceName, SoftApConfiguration config, SoftApListener listener) { - if (!mWifiCondManager.registerApListener(ifaceName, listener)) { + if (!mWifiCondManager.registerApCallback(ifaceName, Runnable::run, listener)) { Log.e(TAG, "Failed to register ap listener"); return false; } - if (!mHostapdHal.addAccessPoint(ifaceName, config, () -> listener.onFailure())) { + if (!mHostapdHal.addAccessPoint(ifaceName, config, listener::onFailure)) { Log.e(TAG, "Failed to add acccess point"); mWifiMetrics.incrementNumSetupSoftApInterfaceFailureDueToHostapd(); return false; @@ -2624,16 +2623,16 @@ public class WifiNative { android.net.wifi.wificond.PnoNetwork toNativePnoNetwork() { android.net.wifi.wificond.PnoNetwork nativePnoNetwork = new android.net.wifi.wificond.PnoNetwork(); - nativePnoNetwork.isHidden = - (flags & WifiScanner.PnoSettings.PnoNetwork.FLAG_DIRECTED_SCAN) != 0; + nativePnoNetwork.setHidden( + (flags & WifiScanner.PnoSettings.PnoNetwork.FLAG_DIRECTED_SCAN) != 0); try { - nativePnoNetwork.ssid = - NativeUtil.byteArrayFromArrayList(NativeUtil.decodeSsid(ssid)); + nativePnoNetwork.setSsid( + NativeUtil.byteArrayFromArrayList(NativeUtil.decodeSsid(ssid))); } catch (IllegalArgumentException e) { Log.e(TAG, "Illegal argument " + ssid, e); return null; } - nativePnoNetwork.frequencies = frequencies; + nativePnoNetwork.setFrequenciesMhz(frequencies); return nativePnoNetwork; } } @@ -2659,21 +2658,22 @@ public class WifiNative { android.net.wifi.wificond.PnoSettings toNativePnoSettings() { android.net.wifi.wificond.PnoSettings nativePnoSettings = new android.net.wifi.wificond.PnoSettings(); - nativePnoSettings.intervalMs = periodInMs; - nativePnoSettings.min2gRssi = min24GHzRssi; - nativePnoSettings.min5gRssi = min5GHzRssi; - nativePnoSettings.min6gRssi = min6GHzRssi; + nativePnoSettings.setIntervalMillis(periodInMs); + nativePnoSettings.setMin2gRssiDbm(min24GHzRssi); + nativePnoSettings.setMin5gRssiDbm(min5GHzRssi); + nativePnoSettings.setMin6gRssiDbm(min6GHzRssi); - nativePnoSettings.pnoNetworks = new ArrayList<>(); + List<android.net.wifi.wificond.PnoNetwork> pnoNetworks = new ArrayList<>(); if (networkList != null) { for (PnoNetwork network : networkList) { android.net.wifi.wificond.PnoNetwork nativeNetwork = network.toNativePnoNetwork(); if (nativeNetwork != null) { - nativePnoSettings.pnoNetworks.add(nativeNetwork); + pnoNetworks.add(nativeNetwork); } } } + nativePnoSettings.setPnoNetworks(pnoNetworks); return nativePnoSettings; } } diff --git a/service/java/com/android/server/wifi/WifiShellCommand.java b/service/java/com/android/server/wifi/WifiShellCommand.java index fa468c7fe..940c610a0 100644 --- a/service/java/com/android/server/wifi/WifiShellCommand.java +++ b/service/java/com/android/server/wifi/WifiShellCommand.java @@ -19,8 +19,8 @@ package com.android.server.wifi; import android.content.Context; import android.net.wifi.IWifiManager; import android.net.wifi.SoftApConfiguration; -import android.net.wifi.WifiCondManager; import android.net.wifi.WifiScanner; +import android.net.wifi.wificond.WifiCondManager; import android.os.Binder; import android.os.ServiceManager; import android.os.ShellCommand; @@ -321,6 +321,9 @@ public class WifiShellCommand extends ShellCommand { } private int sendLinkProbe(PrintWriter pw) throws InterruptedException { + // Note: should match WifiCondManager#SEND_MGMT_FRAME_TIMEOUT_MS + final int sendMgmtFrameTimeoutMs = 1000; + ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<>(1); mClientModeImpl.probeLink(new WifiCondManager.SendMgmtFrameCallback() { @Override @@ -335,8 +338,7 @@ public class WifiShellCommand extends ShellCommand { }, -1); // block until msg is received, or timed out - String msg = queue.poll(WifiCondManager.SEND_MGMT_FRAME_TIMEOUT_MS + 1000, - TimeUnit.MILLISECONDS); + String msg = queue.poll(sendMgmtFrameTimeoutMs + 1000, TimeUnit.MILLISECONDS); if (msg == null) { pw.println("Link probe timed out"); } else { |