summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChih-Yu Huang <akahuang@google.com>2022-04-19 17:55:24 +0900
committerChih-Yu Huang <akahuang@google.com>2022-04-22 13:10:26 +0900
commit3f06b8aacaf63d938be3dc0125b223999ed6a6a6 (patch)
tree61009518238d4e6086a0ce0a0f008e0e4d707790
parent796d13875cce231dc9d130c7b7d7a15cdd6d2196 (diff)
downloaduwb-3f06b8aacaf63d938be3dc0125b223999ed6a6a6.tar.gz
uwb_core: polish the struct of the ranging data notification
Originally, we missed several fields of RANGE_DATA_NTF when converting the packet to the UciNotification enum. This CL adds all of the fields properly. Bug: 228136039 Test: cargo test Test: cargo clippy Change-Id: Ia6007befca5cc2f25eb5d6005bf2d714afcce56b
-rw-r--r--src/rust/uwb_core/src/uci/notification.rs40
-rw-r--r--src/rust/uwb_core/src/uci/params.rs6
2 files changed, 30 insertions, 16 deletions
diff --git a/src/rust/uwb_core/src/uci/notification.rs b/src/rust/uwb_core/src/uci/notification.rs
index 20debb6..89b4bb1 100644
--- a/src/rust/uwb_core/src/uci/notification.rs
+++ b/src/rust/uwb_core/src/uci/notification.rs
@@ -19,8 +19,8 @@ use uwb_uci_packets::Packet;
use crate::uci::error::{Error, Result as UciResult, StatusCode};
use crate::uci::params::{
- ControleeStatus, DeviceState, ExtendedAddressTwoWayRangingMeasurement, RawVendorMessage,
- ReasonCode, SessionId, SessionState, ShortAddressTwoWayRangingMeasurement,
+ ControleeStatus, DeviceState, ExtendedAddressTwoWayRangingMeasurement, RangingMeasurementType,
+ RawVendorMessage, ReasonCode, SessionId, SessionState, ShortAddressTwoWayRangingMeasurement,
};
#[derive(Debug, Clone)]
@@ -37,11 +37,22 @@ pub(crate) enum UciNotification {
remaining_multicast_list_size: usize,
status_list: Vec<ControleeStatus>,
},
- ShortMacTwoWayRangeData(Vec<ShortAddressTwoWayRangingMeasurement>),
- ExtendedMacTwoWayRangeData(Vec<ExtendedAddressTwoWayRangingMeasurement>),
+ RangeData {
+ sequence_number: u32,
+ session_id: SessionId,
+ current_ranging_interval_ms: u32,
+ ranging_measurement_type: RangingMeasurementType,
+ ranging_measurements: RangingMeasurements,
+ },
RawVendor(RawVendorMessage),
}
+#[derive(Debug, Clone)]
+pub(crate) enum RangingMeasurements {
+ Short(Vec<ShortAddressTwoWayRangingMeasurement>),
+ Extended(Vec<ExtendedAddressTwoWayRangingMeasurement>),
+}
+
impl UciNotification {
pub fn need_retry(&self) -> bool {
matches!(self, Self::CoreGenericError(StatusCode::UciStatusCommandRetry))
@@ -120,19 +131,22 @@ impl TryFrom<uwb_uci_packets::RangeDataNtfPacket> for UciNotification {
type Error = Error;
fn try_from(evt: uwb_uci_packets::RangeDataNtfPacket) -> Result<Self, Self::Error> {
use uwb_uci_packets::RangeDataNtfChild;
- match evt.specialize() {
+ let ranging_measurements = match evt.specialize() {
RangeDataNtfChild::ShortMacTwoWayRangeDataNtf(evt) => {
- Ok(UciNotification::ShortMacTwoWayRangeData(
- evt.get_two_way_ranging_measurements().clone(),
- ))
+ RangingMeasurements::Short(evt.get_two_way_ranging_measurements().clone())
}
RangeDataNtfChild::ExtendedMacTwoWayRangeDataNtf(evt) => {
- Ok(UciNotification::ExtendedMacTwoWayRangeData(
- evt.get_two_way_ranging_measurements().clone(),
- ))
+ RangingMeasurements::Extended(evt.get_two_way_ranging_measurements().clone())
}
- _ => Err(Error::Specialize(evt.to_vec())),
- }
+ _ => return Err(Error::Specialize(evt.to_vec())),
+ };
+ Ok(UciNotification::RangeData {
+ sequence_number: evt.get_sequence_number(),
+ session_id: evt.get_session_id(),
+ current_ranging_interval_ms: evt.get_current_ranging_interval(),
+ ranging_measurement_type: evt.get_ranging_measurement_type(),
+ ranging_measurements,
+ })
}
}
diff --git a/src/rust/uwb_core/src/uci/params.rs b/src/rust/uwb_core/src/uci/params.rs
index 0b124fa..0bfd815 100644
--- a/src/rust/uwb_core/src/uci/params.rs
+++ b/src/rust/uwb_core/src/uci/params.rs
@@ -26,9 +26,9 @@ use crate::uci::error::StatusCode;
pub use uwb_uci_packets::{
AppConfigStatus, AppConfigTlv, AppConfigTlvType, CapTlv, CapTlvType, Controlee,
ControleeStatus, DeviceConfigId, DeviceConfigStatus, DeviceConfigTlv, DeviceState,
- ExtendedAddressTwoWayRangingMeasurement, MulticastUpdateStatusCode, PowerStats, ReasonCode,
- ResetConfig, SessionState, SessionType, ShortAddressTwoWayRangingMeasurement,
- UpdateMulticastListAction,
+ ExtendedAddressTwoWayRangingMeasurement, MulticastUpdateStatusCode, PowerStats,
+ RangingMeasurementType, ReasonCode, ResetConfig, SessionState, SessionType,
+ ShortAddressTwoWayRangingMeasurement, UpdateMulticastListAction,
};
pub type SessionId = u32;