summaryrefslogtreecommitdiff
path: root/src/rust
diff options
context:
space:
mode:
authorRoshan Pius <rpius@google.com>2022-04-07 13:38:21 -0700
committerRoshan Pius <rpius@google.com>2022-04-08 21:09:05 +0000
commit5e1598e3db544b9585e6dced771c86959e774e7c (patch)
tree8c5d859273f2d79338f50fd909e02b05a800af0c /src/rust
parent53745868cd3a39abfdb13cf9c89be5076fa84006 (diff)
downloaduwb-5e1598e3db544b9585e6dced771c86959e774e7c.tar.gz
uwb(uci-rust): Add more unit tests
Bug: 216552887 Test: atest libuwb_uci_rust_tests Change-Id: Ib218bf868f9f6fa6636f8d7d8f9d5b15acbd8f50
Diffstat (limited to 'src/rust')
-rw-r--r--src/rust/uci/mod.rs2
-rw-r--r--src/rust/uci/uci_hmsgs.rs32
-rw-r--r--src/rust/uwb_core/src/uci/command.rs2
-rw-r--r--src/rust/uwb_core/src/uci/params.rs15
-rw-r--r--src/rust/uwb_core/src/uci/uci_manager.rs4
-rw-r--r--src/rust/uwb_uci_packets/uci_packets.pdl9
6 files changed, 41 insertions, 23 deletions
diff --git a/src/rust/uci/mod.rs b/src/rust/uci/mod.rs
index 3b60478..a24d2f2 100644
--- a/src/rust/uci/mod.rs
+++ b/src/rust/uci/mod.rs
@@ -276,7 +276,7 @@ impl<T: EventManager> Driver<T> {
no_of_controlee,
address_list,
sub_session_id_list,
- )
+ )?
.build()
.into(),
JNICommand::UciSetCountryCode { ref code } => {
diff --git a/src/rust/uci/uci_hmsgs.rs b/src/rust/uci/uci_hmsgs.rs
index 00f87bf..67c2c75 100644
--- a/src/rust/uci/uci_hmsgs.rs
+++ b/src/rust/uci/uci_hmsgs.rs
@@ -23,7 +23,7 @@ use uwb_uci_packets::{
ResetConfig, SessionInitCmdBuilder, SessionSetAppConfigCmdBuilder, SessionType,
SessionUpdateControllerMulticastListCmdBuilder, UciCommandPacket, UciVendor_9_CommandBuilder,
UciVendor_A_CommandBuilder, UciVendor_B_CommandBuilder, UciVendor_E_CommandBuilder,
- UciVendor_F_CommandBuilder,
+ UciVendor_F_CommandBuilder, UpdateMulticastListAction,
};
pub fn build_session_init_cmd(
@@ -46,7 +46,7 @@ pub fn build_multicast_list_update_cmd(
no_of_controlee: u8,
address_list: &[i16],
sub_session_id_list: &[i32],
-) -> SessionUpdateControllerMulticastListCmdBuilder {
+) -> Result<SessionUpdateControllerMulticastListCmdBuilder, UwbErr> {
let mut controlees = Vec::new();
for i in 0..no_of_controlee {
controlees.push(Controlee {
@@ -54,7 +54,11 @@ pub fn build_multicast_list_update_cmd(
subsession_id: sub_session_id_list[i as usize] as u32,
});
}
- SessionUpdateControllerMulticastListCmdBuilder { session_id, action, controlees }
+ Ok(SessionUpdateControllerMulticastListCmdBuilder {
+ session_id,
+ action: UpdateMulticastListAction::from_u8(action).ok_or(UwbErr::InvalidArgs)?,
+ controlees,
+ })
}
pub fn build_set_app_config_cmd(
@@ -99,3 +103,25 @@ pub fn build_device_reset_cmd(reset_config: u8) -> Result<DeviceResetCmdBuilder,
reset_config: ResetConfig::from_u8(reset_config).ok_or(UwbErr::InvalidArgs)?,
})
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use num_traits::ToPrimitive;
+ use uwb_uci_packets::*;
+
+ #[test]
+ fn test_build_uci_vendor_cmd_packet() {
+ let oid: u8 = 6;
+ let gid = GroupId::VendorReserved9;
+ let payload = vec![0x5, 0x5, 0x5, 0x5];
+ assert_eq!(
+ build_uci_vendor_cmd_packet(gid.to_u32().unwrap(), oid.into(), payload.clone())
+ .unwrap()
+ .to_bytes(),
+ UciVendor_9_CommandBuilder { opcode: oid, payload: Some(Bytes::from(payload)) }
+ .build()
+ .to_bytes()
+ );
+ }
+}
diff --git a/src/rust/uwb_core/src/uci/command.rs b/src/rust/uwb_core/src/uci/command.rs
index eeb835f..f7f8210 100644
--- a/src/rust/uwb_core/src/uci/command.rs
+++ b/src/rust/uwb_core/src/uci/command.rs
@@ -107,7 +107,7 @@ impl TryFrom<UciCommand> for uwb_uci_packets::UciCommandPacket {
UciCommand::SessionUpdateControllerMulticastList { session_id, action, controlees } => {
uwb_uci_packets::SessionUpdateControllerMulticastListCmdBuilder {
session_id,
- action: action.into(),
+ action,
controlees,
}
.build()
diff --git a/src/rust/uwb_core/src/uci/params.rs b/src/rust/uwb_core/src/uci/params.rs
index d744ccb..33507a3 100644
--- a/src/rust/uwb_core/src/uci/params.rs
+++ b/src/rust/uwb_core/src/uci/params.rs
@@ -26,7 +26,7 @@ pub use uwb_uci_packets::{
AppConfigStatus, AppConfigTlv, AppConfigTlvType, CapTlv, CapTlvType, Controlee,
ControleeStatus, DeviceConfigId, DeviceConfigStatus, DeviceConfigTlv, DeviceState,
ExtendedAddressTwoWayRangingMeasurement, PowerStats, ReasonCode, ResetConfig, SessionState,
- SessionType, ShortAddressTwoWayRangingMeasurement,
+ SessionType, ShortAddressTwoWayRangingMeasurement, UpdateMulticastListAction,
};
pub type SessionId = u32;
@@ -90,19 +90,6 @@ impl PartialEq for SetAppConfigResponse {
}
}
-// TODO(akahuang): Add the enum at uwb_uci_packets.
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub enum UpdateMulticastListAction {
- Add = 0x00,
- Delete = 0x01,
-}
-
-impl From<UpdateMulticastListAction> for u8 {
- fn from(item: UpdateMulticastListAction) -> u8 {
- item as u8
- }
-}
-
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct CountryCode([u8; 2]);
diff --git a/src/rust/uwb_core/src/uci/uci_manager.rs b/src/rust/uwb_core/src/uci/uci_manager.rs
index eab3953..5ddd986 100644
--- a/src/rust/uwb_core/src/uci/uci_manager.rs
+++ b/src/rust/uwb_core/src/uci/uci_manager.rs
@@ -971,7 +971,7 @@ mod tests {
uwb_uci_packets::Controlee { short_address: 0x4567, subsession_id: 0x90ab };
let cmd = uwb_uci_packets::SessionUpdateControllerMulticastListCmdBuilder {
session_id: 0x123,
- action: UpdateMulticastListAction::Add.into(),
+ action: UpdateMulticastListAction::AddControlee,
controlees: vec![controlee],
}
.build()
@@ -987,7 +987,7 @@ mod tests {
.await;
let session_id = 0x123;
- let action = UpdateMulticastListAction::Add;
+ let action = UpdateMulticastListAction::AddControlee;
let controlee = Controlee { short_address: 0x4567, subsession_id: 0x90ab };
let result = uci_manager
.session_update_controller_multicast_list(session_id, action, vec![controlee])
diff --git a/src/rust/uwb_uci_packets/uci_packets.pdl b/src/rust/uwb_uci_packets/uci_packets.pdl
index a207eff..b521c18 100644
--- a/src/rust/uwb_uci_packets/uci_packets.pdl
+++ b/src/rust/uwb_uci_packets/uci_packets.pdl
@@ -618,15 +618,20 @@ struct Controlee {
subsession_id: 32,
}
+enum UpdateMulticastListAction: 8 {
+ ADD_CONTROLEE = 0,
+ REMOVE_CONTROLEE = 1,
+}
+
packet SessionUpdateControllerMulticastListCmd : SessionCommand (opcode = 0x7) { //SESSION_UPDATE_CONTROLLER_MULTICAST_LIST
session_id: 32,
- action: 8,
+ action: UpdateMulticastListAction,
_count_(controlees): 8,
controlees: Controlee[],
}
test SessionUpdateControllerMulticastListCmd {
- "\x21\x07\x00\x06\x00\x00\x00\x00\x01\x02\x03\x04\x00",
+ "\x21\x07\x00\x06\x00\x00\x00\x00\x01\x02\x03\x01\x00",
}
packet SessionUpdateControllerMulticastListRsp : SessionResponse (opcode = 0x7) { //SESSION_UPDATE_CONTROLLER_MULTICAST_LIST