summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorEtan Cohen <etancohen@google.com>2019-12-20 03:58:09 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-12-20 03:58:09 +0000
commit6567c9020323a8c7774616616a20bc1997988ba6 (patch)
treea3f2fe65b97bdc8528ba2fba3dbf92b3c500eb35 /service
parent1b6e03b0b29a06880e2e6632c8095c9016b75d34 (diff)
parent3123395d25a89ae1db9a037dce38a7f38936692c (diff)
Merge "[WIFICOND] Formalize the wificond AIDL interface"
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/ClientModeImpl.java14
-rw-r--r--service/java/com/android/server/wifi/LinkProbeManager.java2
-rw-r--r--service/java/com/android/server/wifi/SoftApManager.java39
-rw-r--r--service/java/com/android/server/wifi/WifiInjector.java2
-rw-r--r--service/java/com/android/server/wifi/WifiMetrics.java2
-rw-r--r--service/java/com/android/server/wifi/WifiNative.java76
-rw-r--r--service/java/com/android/server/wifi/WifiShellCommand.java8
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 {