diff options
author | Shreshta Manu <shreshtabm@google.com> | 2023-09-28 17:22:56 +0000 |
---|---|---|
committer | Shreshta Manu <shreshtabm@google.com> | 2023-09-28 17:24:38 +0000 |
commit | 63b6e0b8cfd3ddf16d454fc2865a148653a36750 (patch) | |
tree | 7d190cf95d15f16fee59a25c04bd85d387eaa1f4 | |
parent | 3a111b13846a510dbdb1c1087c2e6b0ec159df75 (diff) | |
download | Uwb-63b6e0b8cfd3ddf16d454fc2865a148653a36750.tar.gz |
[uwb] Interpret sync code as byte array
Test: atest ServiceUwbTests
Bug: 299072849
Change-Id: If159d67182b5a5e770a951b6050a957647f7238c
-rw-r--r-- | service/java/com/android/server/uwb/params/CccDecoder.java | 14 | ||||
-rw-r--r-- | service/tests/src/com/android/server/uwb/params/CccDecoderTest.java | 2 |
2 files changed, 9 insertions, 7 deletions
diff --git a/service/java/com/android/server/uwb/params/CccDecoder.java b/service/java/com/android/server/uwb/params/CccDecoder.java index 2761e580..8a94c160 100644 --- a/service/java/com/android/server/uwb/params/CccDecoder.java +++ b/service/java/com/android/server/uwb/params/CccDecoder.java @@ -62,7 +62,6 @@ import android.util.Log; import com.android.server.uwb.config.ConfigParam; import com.google.uwb.support.base.Params; -import com.google.uwb.support.ccc.CccParams; import com.google.uwb.support.ccc.CccProtocolVersion; import com.google.uwb.support.ccc.CccPulseShapeCombo; import com.google.uwb.support.ccc.CccRangingStartedParams; @@ -162,11 +161,14 @@ public class CccDecoder extends TlvDecoder { if (isBitSet(chapsPerslot, CCC_CHAPS_PER_SLOT_24)) { builder.addChapsPerSlot(CHAPS_PER_SLOT_24); } - // Don't use TlvDecodeBuffer#getInt() to avoid conversion to little endian. - int syncCodes = ByteBuffer.wrap(tlvs.getByteArray(CCC_SUPPORTED_SYNC_CODES)).getInt(); - for (int i = 0; i < 32; i++) { - if (isBitSet(syncCodes, 1 << i)) { - builder.addSyncCode(i + 1); + byte[] syncCodes = tlvs.getByteArray(CCC_SUPPORTED_SYNC_CODES); + for (int byteIndex = 0; byteIndex < syncCodes.length; byteIndex++) { + byte syncCodeByte = syncCodes[byteIndex]; + for (int bitIndex = 0; bitIndex < 8; bitIndex++) { + if ((syncCodeByte & (1 << bitIndex)) != 0) { + int syncCodeValue = (byteIndex * 8) + bitIndex + 1; + builder.addSyncCode(syncCodeValue); + } } } diff --git a/service/tests/src/com/android/server/uwb/params/CccDecoderTest.java b/service/tests/src/com/android/server/uwb/params/CccDecoderTest.java index a7fcad4d..c3325f61 100644 --- a/service/tests/src/com/android/server/uwb/params/CccDecoderTest.java +++ b/service/tests/src/com/android/server/uwb/params/CccDecoderTest.java @@ -112,7 +112,7 @@ public class CccDecoderTest { assertThat(cccSpecificationParams.getChapsPerSlot()).isEqualTo( List.of(CHAPS_PER_SLOT_3, CHAPS_PER_SLOT_9)); assertThat(cccSpecificationParams.getSyncCodes()).isEqualTo( - List.of(2, 8)); + List.of(26, 32)); assertThat(cccSpecificationParams.getChannels()).isEqualTo(List.of(5, 9)); assertThat(cccSpecificationParams.getHoppingConfigModes()).isEqualTo( List.of(HOPPING_CONFIG_MODE_CONTINUOUS, HOPPING_CONFIG_MODE_ADAPTIVE)); |