summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-06-10 01:19:42 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-06-10 01:19:42 +0000
commit41f199d925f5bf81e3ab4508e6514a55536de6f0 (patch)
treeb473a71b4c7f1ea7078fc9ab1de24560108cbe70
parent8ac6e246ef5773dfd4c3ec0a79e3cc5e09d95ad6 (diff)
parent6303968c5ec3d322248e87db4c548899d42c01a6 (diff)
downloaduwb-android14-platform-release.tar.gz
Change-Id: I830327629f71d347aa0f6a850cb5a8f9bae4005b
-rw-r--r--src/rust/uwb_core/protos/uwb_service.proto1
-rw-r--r--src/rust/uwb_core/src/proto/mappings.rs1
-rw-r--r--src/rust/uwb_core/src/uci/notification.rs20
-rw-r--r--src/rust/uwb_uci_packets/uci_packets.pdl5
4 files changed, 27 insertions, 0 deletions
diff --git a/src/rust/uwb_core/protos/uwb_service.proto b/src/rust/uwb_core/protos/uwb_service.proto
index 944f82e..72cd879 100644
--- a/src/rust/uwb_core/protos/uwb_service.proto
+++ b/src/rust/uwb_core/protos/uwb_service.proto
@@ -186,6 +186,7 @@ enum SessionType {
FIRA_RANGING_SESSION = 0;
FIRA_DATA_TRANSFER = 1;
CCC = 2;
+ DEVICE_TEST_MODE = 3;
}
// Represent uwb_uci_packets::UpdateMulticastListAction.
diff --git a/src/rust/uwb_core/src/proto/mappings.rs b/src/rust/uwb_core/src/proto/mappings.rs
index cb0e078..1535197 100644
--- a/src/rust/uwb_core/src/proto/mappings.rs
+++ b/src/rust/uwb_core/src/proto/mappings.rs
@@ -528,6 +528,7 @@ enum_mapping! {
FIRA_RANGING_SESSION => FiraRangingSession,
FIRA_DATA_TRANSFER => FiraDataTransfer,
CCC => Ccc,
+ DEVICE_TEST_MODE => DeviceTestMode,
}
enum_mapping! {
diff --git a/src/rust/uwb_core/src/uci/notification.rs b/src/rust/uwb_core/src/uci/notification.rs
index 80ce3cc..ad23e29 100644
--- a/src/rust/uwb_core/src/uci/notification.rs
+++ b/src/rust/uwb_core/src/uci/notification.rs
@@ -209,6 +209,7 @@ impl TryFrom<uwb_uci_packets::UciNotification> for UciNotification {
UciNotificationChild::UciVendor_B_Notification(evt) => vendor_notification(evt.into()),
UciNotificationChild::UciVendor_E_Notification(evt) => vendor_notification(evt.into()),
UciNotificationChild::UciVendor_F_Notification(evt) => vendor_notification(evt.into()),
+ UciNotificationChild::TestNotification(evt) => vendor_notification(evt.into()),
_ => {
error!("Unknown UciNotification: {:?}", evt);
Err(Error::Unknown)
@@ -458,6 +459,10 @@ fn get_vendor_uci_payload(evt: uwb_uci_packets::UciNotification) -> Result<Vec<u
uwb_uci_packets::UciVendor_F_NotificationChild::None => Ok(Vec::new()),
}
}
+ uwb_uci_packets::UciNotificationChild::TestNotification(evt) => match evt.specialize() {
+ uwb_uci_packets::TestNotificationChild::Payload(payload) => Ok(payload.to_vec()),
+ uwb_uci_packets::TestNotificationChild::None => Ok(Vec::new()),
+ },
_ => {
error!("Unknown UciVendor packet: {:?}", evt);
Err(Error::Unknown)
@@ -823,4 +828,19 @@ mod tests {
})
);
}
+
+ #[test]
+ fn test_test_to_vendor_notification_casting() {
+ let test_notification: uwb_uci_packets::UciNotification =
+ uwb_uci_packets::TestNotificationBuilder { opcode: 0x22, payload: None }.build().into();
+ let test_uci_notification = UciNotification::try_from(test_notification).unwrap();
+ assert_eq!(
+ test_uci_notification,
+ UciNotification::Vendor(RawUciMessage {
+ gid: 0x0d, // per enum Test GroupId in uci_packets.pdl
+ oid: 0x22,
+ payload: vec![],
+ })
+ );
+ }
}
diff --git a/src/rust/uwb_uci_packets/uci_packets.pdl b/src/rust/uwb_uci_packets/uci_packets.pdl
index 711966f..d86d9e6 100644
--- a/src/rust/uwb_uci_packets/uci_packets.pdl
+++ b/src/rust/uwb_uci_packets/uci_packets.pdl
@@ -431,6 +431,7 @@ enum SessionType: 8 {
FIRA_RANGING_SESSION = 0x00,
FIRA_DATA_TRANSFER = 0x01,
CCC = 0xA0,
+ DEVICE_TEST_MODE = 0xD0,
}
enum MessageType: 3 {
@@ -1330,3 +1331,7 @@ packet UciVendor_E_Notification : UciNotification (group_id = VENDOR_RESERVED_E)
packet UciVendor_F_Notification : UciNotification (group_id = VENDOR_RESERVED_F) {
_payload_,
}
+
+packet TestNotification : UciNotification (group_id = TEST) {
+ _payload_,
+}