Snap for 10296977 from 6303968c5ec3d322248e87db4c548899d42c01a6 to udc-release

Change-Id: I830327629f71d347aa0f6a850cb5a8f9bae4005b
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 @@
   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 @@
     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 @@
             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 @@
                 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 @@
             })
         );
     }
+
+    #[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 @@
     FIRA_RANGING_SESSION = 0x00,
     FIRA_DATA_TRANSFER = 0x01,
     CCC = 0xA0,
+    DEVICE_TEST_MODE = 0xD0,
 }
 
 enum MessageType: 3 {
@@ -1330,3 +1331,7 @@
 packet UciVendor_F_Notification : UciNotification (group_id = VENDOR_RESERVED_F) {
     _payload_,
 }
+
+packet TestNotification : UciNotification (group_id = TEST) {
+    _payload_,
+}