summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author maheshkkv <maheshkkv@google.com> 2025-03-11 22:20:23 -0700
committer maheshkkv <maheshkkv@google.com> 2025-03-17 20:09:57 -0700
commit533a191ac79727f5f4999d7c9ac40f1a603510ca (patch)
tree2e19ee78816995d10bd197ccadbbf7fb37bc5dff
parentf51443e4bc465e1169aae55808067f145416028d (diff)
Fix Secure ranging result processing
Bug: 397619419 Test: atest FrameworksWifiTests Flag: EXEMPT bug fix Change-Id: I4500b5e7b99508b9996e56f89adf863f00e60833
-rw-r--r--framework/java/android/net/wifi/rtt/RangingResult.java8
-rw-r--r--service/java/com/android/server/wifi/rtt/RttServiceImpl.java11
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java8
-rw-r--r--service/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java34
4 files changed, 41 insertions, 20 deletions
diff --git a/framework/java/android/net/wifi/rtt/RangingResult.java b/framework/java/android/net/wifi/rtt/RangingResult.java
index 8ef3d2de08..09d196ab44 100644
--- a/framework/java/android/net/wifi/rtt/RangingResult.java
+++ b/framework/java/android/net/wifi/rtt/RangingResult.java
@@ -197,6 +197,14 @@ public final class RangingResult implements Parcelable {
mR2iTxLtfRepetitions = other.mR2iTxLtfRepetitions;
mNumTxSpatialStreams = other.mNumTxSpatialStreams;
mNumRxSpatialStreams = other.mNumRxSpatialStreams;
+ mIsRangingAuthenticated = other.mIsRangingAuthenticated;
+ mIsRangingFrameProtected = other.mIsRangingFrameProtected;
+ mIsSecureHeLtfEnabled = other.mIsSecureHeLtfEnabled;
+ mSecureHeLtfProtocolVersion = other.mSecureHeLtfProtocolVersion;
+ if (other.mPasnComebackCookie != null) {
+ mPasnComebackCookie = other.mPasnComebackCookie.clone();
+ mPasnComebackAfterMillis = other.mPasnComebackAfterMillis;
+ }
mVendorData = new ArrayList<>(other.mVendorData);
}
diff --git a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
index 87ab51926a..10cbe18e11 100644
--- a/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
+++ b/service/java/com/android/server/wifi/rtt/RttServiceImpl.java
@@ -1452,6 +1452,17 @@ public class RttServiceImpl extends IWifiRttManager.Stub {
&& !resultForRequest.getVendorData().isEmpty()) {
builder.setVendorData(resultForRequest.getVendorData());
}
+ // set secure ranging fields
+ builder.setRangingFrameProtected(resultForRequest.isRangingFrameProtected())
+ .setRangingAuthenticated(resultForRequest.isRangingAuthenticated())
+ .setSecureHeLtfEnabled(resultForRequest.isSecureHeLtfEnabled())
+ .setSecureHeLtfProtocolVersion(
+ resultForRequest.getSecureHeLtfProtocolVersion());
+ if (resultForRequest.getPasnComebackCookie() != null) {
+ builder.setPasnComebackCookie(resultForRequest.getPasnComebackCookie());
+ builder.setPasnComebackAfterMillis(
+ resultForRequest.getPasnComebackAfterMillis());
+ }
finalResults.add(builder.build());
}
}
diff --git a/service/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java b/service/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java
index be9982e60a..e63c67512f 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/rtt/RttServiceImplTest.java
@@ -421,11 +421,15 @@ public class RttServiceImplTest extends WifiBaseTest {
assertEquals("Password is not set", "TEST_PASSWORD", halRequest.mRttPeers.get(
1).getSecureRangingConfig().getPasnConfig().getPassword());
+ // Verify ranging results are processed correctly
+ Pair<List<RangingResult>, List<RangingResult>> resultsPair = getDummyRangingResults(
+ halRequest);
mRangingResultsCbCaptor.getValue().onRangingResults(mIntCaptor.getValue(),
- getDummyRangingResults(request).second);
+ resultsPair.first);
mMockLooper.dispatchAll();
-
verify(mockCallback).onRangingResults(mListCaptor.capture());
+ assertTrue(compareListContentsNoOrdering(resultsPair.second, mListCaptor.getValue()));
+
verifyWakeupCancelled();
verifyNoMoreInteractions(mockRttControllerHal, mockCallback,
mAlarmManager.getAlarmManager());
diff --git a/service/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java b/service/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java
index ecbf2bf585..d19f79b851 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/rtt/RttTestUtils.java
@@ -122,7 +122,7 @@ public class RttTestUtils {
.setSecureHeLtfEnabled(true)
.build();
config = new ResponderConfig.Builder()
- .setMacAddress(MacAddress.fromString("00:11:22:33:44:55"))
+ .setMacAddress(MacAddress.fromString("00:11:22:33:44:56"))
.setResponderType(ResponderConfig.RESPONDER_AP)
.setChannelWidth(ScanResult.CHANNEL_WIDTH_80MHZ)
.setPreamble(ScanResult.PREAMBLE_HE)
@@ -140,7 +140,7 @@ public class RttTestUtils {
.build();
config = new ResponderConfig
.Builder()
- .setMacAddress(MacAddress.fromString("00:11:22:33:44:56"))
+ .setMacAddress(MacAddress.fromString("00:11:22:33:44:57"))
.setResponderType(ResponderConfig.RESPONDER_AP)
.setChannelWidth(ScanResult.CHANNEL_WIDTH_80MHZ)
.setPreamble(ScanResult.PREAMBLE_HE)
@@ -152,7 +152,7 @@ public class RttTestUtils {
// Open mode
config = new ResponderConfig
.Builder()
- .setMacAddress(MacAddress.fromString("00:11:22:33:44:57"))
+ .setMacAddress(MacAddress.fromString("00:11:22:33:44:58"))
.setResponderType(ResponderConfig.RESPONDER_AP)
.setChannelWidth(ScanResult.CHANNEL_WIDTH_80MHZ)
.setPreamble(ScanResult.PREAMBLE_HE)
@@ -270,19 +270,6 @@ public class RttTestUtils {
if (request != null) {
for (ResponderConfig peer : request.mRttPeers) {
- halResults.add(new RangingResult.Builder()
- .setStatus(RangingResult.STATUS_SUCCESS)
- .setMacAddress(peer.getMacAddress())
- .setDistanceMm(rangeCmBase)
- .setDistanceStdDevMm(rangeStdDevCmBase)
- .setRssi(rssiBase)
- .setNumAttemptedMeasurements(8)
- .setNumSuccessfulMeasurements(5)
- .setRangingTimestampMillis(rangeTimestampBase)
- .set80211mcMeasurement(true)
- .setMeasurementChannelFrequencyMHz(5180)
- .setMeasurementBandwidth(ScanResult.CHANNEL_WIDTH_40MHZ)
- .build());
RangingResult.Builder builder = new RangingResult.Builder()
.setStatus(RangingResult.STATUS_SUCCESS)
.setDistanceMm(rangeCmBase++)
@@ -294,13 +281,24 @@ public class RttTestUtils {
.set80211mcMeasurement(true)
.setMeasurementChannelFrequencyMHz(5180)
.setMeasurementBandwidth(ScanResult.CHANNEL_WIDTH_40MHZ);
+ if (peer.getSecureRangingConfig() != null) {
+ builder.setRangingAuthenticated(true);
+ builder.setRangingFrameProtected(true);
+ builder.setSecureHeLtfEnabled(true);
+ builder.setSecureHeLtfProtocolVersion(1);
+ }
+ halResults.add(builder.setMacAddress(peer.getMacAddress()).build());
if (peer.peerHandle == null) {
builder.setMacAddress(peer.getMacAddress());
} else {
+ // Make sure MAC address null when peer handle is set.
+ builder.setMacAddress(null);
builder.setPeerHandle(peer.peerHandle);
}
- RangingResult rangingResult = builder.build();
- results.add(rangingResult);
+ results.add(builder.build());
+ rangeCmBase++;
+ rangeStdDevCmBase++;
+ rssiBase++;
}
} else {
results.add(new RangingResult.Builder()