summaryrefslogtreecommitdiff
path: root/src/rust/uwb_uci_packets
diff options
context:
space:
mode:
authorShreshta Manu <shreshtabm@google.com>2023-02-07 17:22:50 +0000
committerShreshta Manu <shreshtabm@google.com>2023-02-07 17:23:49 +0000
commit70dd5bb84e968263616708716188e1858a4ce04a (patch)
tree2e2155998ff2f85e12cc829a772680bc1ca9e7cd /src/rust/uwb_uci_packets
parent6b01f37badf7bad91f5c1bb86a2cfa73c54ac36a (diff)
downloaduwb-70dd5bb84e968263616708716188e1858a4ce04a.tar.gz
[uwb-uci] change _payload_ in pdl to of type 8[]
_payload_ in pdl would pick the whole packet instead of the remaning items. change them to 8[] so that it picks only the remaining bytes after initial parsing. With this, raw_ntf should consist of all the bytes in ntf packet Bug: 266016401 Test: atest libuwb_uci_packet_tests Test: Manual testing Change-Id: I9f50366e2b14173e818901484b547e395729e6b3
Diffstat (limited to 'src/rust/uwb_uci_packets')
-rw-r--r--src/rust/uwb_uci_packets/src/lib.rs16
-rw-r--r--src/rust/uwb_uci_packets/uci_packets.pdl12
2 files changed, 20 insertions, 8 deletions
diff --git a/src/rust/uwb_uci_packets/src/lib.rs b/src/rust/uwb_uci_packets/src/lib.rs
index 7511c44..d88de5e 100644
--- a/src/rust/uwb_uci_packets/src/lib.rs
+++ b/src/rust/uwb_uci_packets/src/lib.rs
@@ -152,10 +152,11 @@ pub struct ShortAddressDlTdoaRangingMeasurement {
impl ShortAddressDlTdoaRangingMeasurement {
/// Parse the `payload` byte buffer from PDL to the vector of measurement.
- pub fn parse(bytes: &[u8]) -> Option<Vec<Self>> {
+ pub fn parse(bytes: &[u8], no_of_ranging_measurement: u8) -> Option<Vec<Self>> {
let mut ptr = 0;
let mut measurements = vec![];
- while (ptr < bytes.len()) {
+ let mut count = 0;
+ while (count < no_of_ranging_measurement) {
let mac_address = extract_u16(bytes, &mut ptr, 2)?;
let rem = &bytes[ptr..];
let measurement = DlTdoaRangingMeasurement::parse_one(rem);
@@ -164,6 +165,7 @@ impl ShortAddressDlTdoaRangingMeasurement {
ptr += measurement.get_total_size();
measurements
.push(ShortAddressDlTdoaRangingMeasurement { mac_address, measurement });
+ count = count + 1;
}
None => return None,
}
@@ -180,10 +182,11 @@ pub struct ExtendedAddressDlTdoaRangingMeasurement {
impl ExtendedAddressDlTdoaRangingMeasurement {
/// Parse the `payload` byte buffer from PDL to the vector of measurement.
- pub fn parse(bytes: &[u8]) -> Option<Vec<Self>> {
+ pub fn parse(bytes: &[u8], no_of_ranging_measurement: u8) -> Option<Vec<Self>> {
let mut ptr = 0;
let mut measurements = vec![];
- while (ptr < bytes.len()) {
+ let mut count = 0;
+ while (count < no_of_ranging_measurement) {
let mac_address = extract_u64(bytes, &mut ptr, 8)?;
let rem = &bytes[ptr..];
let measurement = DlTdoaRangingMeasurement::parse_one(rem);
@@ -192,6 +195,7 @@ impl ExtendedAddressDlTdoaRangingMeasurement {
ptr += measurement.get_total_size();
measurements
.push(ExtendedAddressDlTdoaRangingMeasurement { mac_address, measurement });
+ count = count + 1;
}
None => return None,
}
@@ -925,7 +929,7 @@ mod tests {
0x05, 0x07, 0x09, 0x05, // 4(Active Ranging Rounds)
];
- let measurements = ShortAddressDlTdoaRangingMeasurement::parse(&bytes).unwrap();
+ let measurements = ShortAddressDlTdoaRangingMeasurement::parse(&bytes, 2).unwrap();
assert_eq!(measurements.len(), 2);
let measurement_1 = &measurements[0].measurement;
let mac_address_1 = &measurements[0].mac_address;
@@ -1009,7 +1013,7 @@ mod tests {
0x02, 0x05, 0x02, 0x05, // 2(Initiator-Responder ToF), 2(Active Ranging Rounds)
];
- let measurements = ExtendedAddressDlTdoaRangingMeasurement::parse(&bytes).unwrap();
+ let measurements = ExtendedAddressDlTdoaRangingMeasurement::parse(&bytes, 1).unwrap();
assert_eq!(measurements.len(), 1);
let measurement = &measurements[0].measurement;
let mac_address = &measurements[0].mac_address;
diff --git a/src/rust/uwb_uci_packets/uci_packets.pdl b/src/rust/uwb_uci_packets/uci_packets.pdl
index c47bd34..bb1b529 100644
--- a/src/rust/uwb_uci_packets/uci_packets.pdl
+++ b/src/rust/uwb_uci_packets/uci_packets.pdl
@@ -998,12 +998,20 @@ test ExtendedMacTwoWaySessionInfoNtf {
packet ShortMacDlTDoASessionInfoNtf : SessionInfoNtf (ranging_measurement_type = DL_TDOA, mac_address_indicator = SHORT_ADDRESS) {
no_of_ranging_measurements : 8,
- _payload_,
+ dl_tdoa_measurements : 8[],
+}
+
+test ShortMacDlTDoASessionInfoNtf {
+ "\x62\x00\x00\x19\x00\x00\x00\x00\x02\x03\x04\x05\x06\x07\x08\x00\x0a\x02\x01\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00",
}
packet ExtendedMacDlTDoASessionInfoNtf : SessionInfoNtf (ranging_measurement_type = DL_TDOA, mac_address_indicator = EXTENDED_ADDRESS) {
no_of_ranging_measurements : 8,
- _payload_,
+ dl_tdoa_measurements : 8[],
+}
+
+test ExtendedMacDlTDoASessionInfoNtf {
+ "\x62\x00\x00\x19\x00\x00\x00\x00\x02\x03\x04\x05\x06\x07\x08\x00\x0a\x01\x01\x01\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00",
}
packet ShortMacOwrAoaSessionInfoNtf : SessionInfoNtf (ranging_measurement_type = OWR_AOA, mac_address_indicator = SHORT_ADDRESS) {