Merge "[RTT2] Convert APIs to use MacAddress"
diff --git a/service/java/com/android/server/wifi/rtt/RttNative.java b/service/java/com/android/server/wifi/rtt/RttNative.java
index e920310..e085352 100644
--- a/service/java/com/android/server/wifi/rtt/RttNative.java
+++ b/service/java/com/android/server/wifi/rtt/RttNative.java
@@ -206,11 +206,8 @@
for (ResponderConfig responder: request.mRttPeers) {
RttConfig config = new RttConfig();
- if (responder.macAddress.length != config.addr.length) {
- Log.e(TAG, "Invalid configuration: unexpected BSSID length -- " + responder);
- continue;
- }
- System.arraycopy(responder.macAddress, 0, config.addr, 0, config.addr.length);
+ System.arraycopy(responder.macAddress.toByteArray(), 0, config.addr, 0,
+ config.addr.length);
try {
config.type = responder.supports80211mc ? RttType.TWO_SIDED : RttType.ONE_SIDED;
diff --git a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
index ff722ae..3417f74 100644
--- a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
+++ b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
@@ -24,6 +24,7 @@
import android.content.pm.PackageManager;
import android.hardware.wifi.V1_0.RttResult;
import android.hardware.wifi.V1_0.RttStatus;
+import android.net.MacAddress;
import android.net.wifi.aware.IWifiAwareMacAddressProvider;
import android.net.wifi.aware.IWifiAwareManager;
import android.net.wifi.rtt.IRttCallback;
@@ -48,8 +49,6 @@
import com.android.server.wifi.Clock;
import com.android.server.wifi.util.WifiPermissionsUtil;
-import libcore.util.HexEncoding;
-
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -350,11 +349,7 @@
private void cancelRanging(RttRequestInfo rri) {
ArrayList<byte[]> macAddresses = new ArrayList<>();
for (ResponderConfig peer : rri.request.mRttPeers) {
- if (peer.macAddress.length != 6) {
- Log.e(TAG, "Invalid configuration: unexpected BSSID length -- " + peer);
- continue;
- }
- macAddresses.add(peer.macAddress);
+ macAddresses.add(peer.macAddress.toByteArray());
}
mRttNative.rangeCancel(rri.cmdId, macAddresses);
@@ -472,7 +467,7 @@
try {
callback.onRangingFailure(RangingResultCallback.STATUS_CODE_FAIL);
} catch (RemoteException e) {
- Log.e(TAG, "RttServiceSynchronized.queueRangingRequest: spamming, callback "
+ Log.e(TAG, "RttServiceSynchronized.queueRangingRequest: spamming, callback "
+ "failed -- " + e);
}
return;
@@ -609,7 +604,7 @@
/**
* Perform pre-execution throttling checks:
* - If all uids in ws are in background then check last execution and block if request is
- * more frequent than permitted
+ * more frequent than permitted
* - If executing (i.e. permitted) then update execution time
*
* Returns true to permit execution, false to abort it.
@@ -735,9 +730,10 @@
+ ", peerIdToMacMap=" + peerIdToMacMap);
}
- for (ResponderConfig rttPeer: request.request.mRttPeers) {
+ for (ResponderConfig rttPeer : request.request.mRttPeers) {
if (rttPeer.peerHandle != null && rttPeer.macAddress == null) {
- rttPeer.macAddress = peerIdToMacMap.get(rttPeer.peerHandle.peerId);
+ rttPeer.macAddress = MacAddress.fromBytes(
+ peerIdToMacMap.get(rttPeer.peerHandle.peerId));
}
}
@@ -799,20 +795,18 @@
*/
private List<RangingResult> postProcessResults(RangingRequest request,
List<RttResult> results) {
- Map<String, RttResult> resultEntries = new HashMap<>();
- for (RttResult result: results) {
- resultEntries.put(new String(HexEncoding.encode(result.addr)), result);
+ Map<MacAddress, RttResult> resultEntries = new HashMap<>();
+ for (RttResult result : results) {
+ resultEntries.put(MacAddress.fromBytes(result.addr), result);
}
List<RangingResult> finalResults = new ArrayList<>(request.mRttPeers.size());
- for (ResponderConfig peer: request.mRttPeers) {
- RttResult resultForRequest = resultEntries.get(
- new String(HexEncoding.encode(peer.macAddress)));
+ for (ResponderConfig peer : request.mRttPeers) {
+ RttResult resultForRequest = resultEntries.get(peer.macAddress);
if (resultForRequest == null) {
if (VDBG) {
- Log.v(TAG, "postProcessResults: missing=" + new String(
- HexEncoding.encode(peer.macAddress)));
+ Log.v(TAG, "postProcessResults: missing=" + peer.macAddress);
}
if (peer.peerHandle == null) {
finalResults.add(
diff --git a/tests/wifitests/src/com/android/server/wifi/rtt/RttNativeTest.java b/tests/wifitests/src/com/android/server/wifi/rtt/RttNativeTest.java
index 51fed83..5043c85 100644
--- a/tests/wifitests/src/com/android/server/wifi/rtt/RttNativeTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/rtt/RttNativeTest.java
@@ -35,12 +35,11 @@
import android.hardware.wifi.V1_0.RttType;
import android.hardware.wifi.V1_0.WifiStatus;
import android.hardware.wifi.V1_0.WifiStatusCode;
+import android.net.MacAddress;
import android.net.wifi.rtt.RangingRequest;
import com.android.server.wifi.HalDeviceManager;
-import libcore.util.HexEncoding;
-
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -118,19 +117,19 @@
RttConfig rttConfig = halRequest.get(0);
collector.checkThat("entry 0: MAC", rttConfig.addr,
- equalTo(HexEncoding.decode("000102030400".toCharArray(), false)));
+ equalTo(MacAddress.fromString("00:01:02:03:04:00").toByteArray()));
collector.checkThat("entry 0: MAC", rttConfig.type, equalTo(RttType.TWO_SIDED));
collector.checkThat("entry 0: MAC", rttConfig.peer, equalTo(RttPeerType.AP));
rttConfig = halRequest.get(1);
collector.checkThat("entry 1: MAC", rttConfig.addr,
- equalTo(HexEncoding.decode("0A0B0C0D0E00".toCharArray(), false)));
+ equalTo(MacAddress.fromString("0A:0B:0C:0D:0E:00").toByteArray()));
collector.checkThat("entry 1: MAC", rttConfig.type, equalTo(RttType.ONE_SIDED));
collector.checkThat("entry 1: MAC", rttConfig.peer, equalTo(RttPeerType.AP));
rttConfig = halRequest.get(2);
collector.checkThat("entry 2: MAC", rttConfig.addr,
- equalTo(HexEncoding.decode("080908070605".toCharArray(), false)));
+ equalTo(MacAddress.fromString("08:09:08:07:06:05").toByteArray()));
collector.checkThat("entry 2: MAC", rttConfig.type, equalTo(RttType.TWO_SIDED));
collector.checkThat("entry 2: MAC", rttConfig.peer, equalTo(RttPeerType.NAN));
@@ -164,8 +163,8 @@
public void testRangeCancel() throws Exception {
int cmdId = 66;
ArrayList<byte[]> macAddresses = new ArrayList<>();
- byte[] mac1 = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 };
- byte[] mac2 = { 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F };
+ byte[] mac1 = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
+ byte[] mac2 = {0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F};
macAddresses.add(mac1);
macAddresses.add(mac2);
@@ -212,7 +211,7 @@
collector.checkThat("status", rttResult.status,
equalTo(RttStatus.SUCCESS));
collector.checkThat("mac", rttResult.addr,
- equalTo(HexEncoding.decode("05060708090A".toCharArray(), false)));
+ equalTo(MacAddress.fromString("05:06:07:08:09:0A").toByteArray()));
collector.checkThat("distanceCm", rttResult.distanceInMm, equalTo(1500));
collector.checkThat("timestamp", rttResult.timeStampInUs, equalTo(666L));
diff --git a/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java
index ee8c15f..7e71069 100644
--- a/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java
@@ -46,6 +46,7 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.wifi.V1_0.RttResult;
+import android.net.MacAddress;
import android.net.wifi.aware.IWifiAwareMacAddressProvider;
import android.net.wifi.aware.IWifiAwareManager;
import android.net.wifi.aware.PeerHandle;
@@ -68,8 +69,6 @@
import com.android.server.wifi.Clock;
import com.android.server.wifi.util.WifiPermissionsUtil;
-import libcore.util.HexEncoding;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -261,9 +260,9 @@
PeerHandle peerHandle2 = new PeerHandle(1023);
request.mRttPeers.add(ResponderConfig.fromWifiAwarePeerHandleWithDefaults(peerHandle1));
request.mRttPeers.add(ResponderConfig.fromWifiAwarePeerHandleWithDefaults(peerHandle2));
- Map<Integer, byte[]> peerHandleToMacMap = new HashMap<>();
- byte[] macAwarePeer1 = HexEncoding.decode("AABBCCDDEEFF".toCharArray(), false);
- byte[] macAwarePeer2 = HexEncoding.decode("BBBBBBEEEEEE".toCharArray(), false);
+ Map<Integer, MacAddress> peerHandleToMacMap = new HashMap<>();
+ MacAddress macAwarePeer1 = MacAddress.fromString("AA:BB:CC:DD:EE:FF");
+ MacAddress macAwarePeer2 = MacAddress.fromString("BB:BB:BB:EE:EE:EE");
peerHandleToMacMap.put(peerHandle1.peerId, macAwarePeer1);
peerHandleToMacMap.put(peerHandle2.peerId, macAwarePeer2);
@@ -431,11 +430,11 @@
(ArrayList) mListCaptor.capture());
RangingRequest request0 = requests[0];
assertEquals(request0.mRttPeers.size(), mListCaptor.getValue().size());
- assertArrayEquals(HexEncoding.decode("000102030400".toCharArray(), false),
+ assertArrayEquals(MacAddress.fromString("00:01:02:03:04:00").toByteArray(),
(byte[]) mListCaptor.getValue().get(0));
- assertArrayEquals(HexEncoding.decode("0A0B0C0D0E00".toCharArray(), false),
+ assertArrayEquals(MacAddress.fromString("0A:0B:0C:0D:0E:00").toByteArray(),
(byte[]) mListCaptor.getValue().get(1));
- assertArrayEquals(HexEncoding.decode("080908070605".toCharArray(), false),
+ assertArrayEquals(MacAddress.fromString("08:09:08:07:06:05").toByteArray(),
(byte[]) mListCaptor.getValue().get(2));
}
@@ -1103,9 +1102,9 @@
private class AwareTranslatePeerHandlesToMac extends MockAnswerUtil.AnswerWithArguments {
private int mExpectedUid;
- private Map<Integer, byte[]> mPeerIdToMacMap;
+ private Map<Integer, MacAddress> mPeerIdToMacMap;
- AwareTranslatePeerHandlesToMac(int expectedUid, Map<Integer, byte[]> peerIdToMacMap) {
+ AwareTranslatePeerHandlesToMac(int expectedUid, Map<Integer, MacAddress> peerIdToMacMap) {
mExpectedUid = expectedUid;
mPeerIdToMacMap = peerIdToMacMap;
}
@@ -1115,7 +1114,7 @@
Map<Integer, byte[]> result = new HashMap<>();
for (Integer peerId: peerIds) {
- byte[] mac = mPeerIdToMacMap.get(peerId);
+ byte[] mac = mPeerIdToMacMap.get(peerId).toByteArray();
if (mac == null) {
continue;
}
diff --git a/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java b/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java
index db3cd17..ec56322 100644
--- a/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java
+++ b/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java
@@ -18,14 +18,13 @@
import android.hardware.wifi.V1_0.RttResult;
import android.hardware.wifi.V1_0.RttStatus;
+import android.net.MacAddress;
import android.net.wifi.ScanResult;
import android.net.wifi.rtt.RangingRequest;
import android.net.wifi.rtt.RangingResult;
import android.net.wifi.rtt.ResponderConfig;
import android.util.Pair;
-import libcore.util.HexEncoding;
-
import java.util.ArrayList;
import java.util.List;
@@ -66,7 +65,7 @@
scan1.setFlag(ScanResult.FLAG_80211mc_RESPONDER);
ScanResult scan2 = new ScanResult();
scan2.BSSID = "0A:0B:0C:0D:0E:" + String.format("%02d", lastMacByte);
- byte[] mac1 = HexEncoding.decode("080908070605".toCharArray(), false);
+ MacAddress mac1 = MacAddress.fromString("08:09:08:07:06:05");
builder.addAccessPoint(scan1);
builder.addAccessPoint(scan2);
@@ -107,13 +106,13 @@
}
} else {
results.add(new RangingResult(RangingResult.STATUS_SUCCESS,
- HexEncoding.decode("100102030405".toCharArray(), false), rangeCmBase++,
+ MacAddress.fromString("10:01:02:03:04:05"), rangeCmBase++,
rangeStdDevCmBase++, rssiBase++, rangeTimestampBase++));
results.add(new RangingResult(RangingResult.STATUS_SUCCESS,
- HexEncoding.decode("1A0B0C0D0E0F".toCharArray(), false), rangeCmBase++,
+ MacAddress.fromString("1A:0B:0C:0D:0E:0F"), rangeCmBase++,
rangeStdDevCmBase++, rssiBase++, rangeTimestampBase++));
results.add(new RangingResult(RangingResult.STATUS_SUCCESS,
- HexEncoding.decode("080908070605".toCharArray(), false), rangeCmBase++,
+ MacAddress.fromString("08:09:08:07:06:05"), rangeCmBase++,
rangeStdDevCmBase++, rssiBase++, rangeTimestampBase++));
halResults.add(getMatchingRttResult(results.get(0), null));
halResults.add(getMatchingRttResult(results.get(1), null));
@@ -123,12 +122,13 @@
return new Pair<>(halResults, results);
}
- private static RttResult getMatchingRttResult(RangingResult rangingResult, byte[] overrideMac) {
+ private static RttResult getMatchingRttResult(RangingResult rangingResult,
+ MacAddress overrideMac) {
RttResult rttResult = new RttResult();
rttResult.status = rangingResult.getStatus() == RangingResult.STATUS_SUCCESS
? RttStatus.SUCCESS : RttStatus.FAILURE;
- System.arraycopy(overrideMac == null ? rangingResult.getMacAddress() : overrideMac, 0,
- rttResult.addr, 0, 6);
+ System.arraycopy(overrideMac == null ? rangingResult.getMacAddress().toByteArray()
+ : overrideMac.toByteArray(), 0, rttResult.addr, 0, 6);
rttResult.distanceInMm = rangingResult.getDistanceMm();
rttResult.distanceSdInMm = rangingResult.getDistanceStdDevMm();
rttResult.rssi = rangingResult.getRssi();