diff options
author | Roshan Pius <rpius@google.com> | 2022-04-07 13:38:21 -0700 |
---|---|---|
committer | Roshan Pius <rpius@google.com> | 2022-04-08 21:09:05 +0000 |
commit | 5e1598e3db544b9585e6dced771c86959e774e7c (patch) | |
tree | 8c5d859273f2d79338f50fd909e02b05a800af0c /src/rust | |
parent | 53745868cd3a39abfdb13cf9c89be5076fa84006 (diff) | |
download | uwb-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.rs | 2 | ||||
-rw-r--r-- | src/rust/uci/uci_hmsgs.rs | 32 | ||||
-rw-r--r-- | src/rust/uwb_core/src/uci/command.rs | 2 | ||||
-rw-r--r-- | src/rust/uwb_core/src/uci/params.rs | 15 | ||||
-rw-r--r-- | src/rust/uwb_core/src/uci/uci_manager.rs | 4 | ||||
-rw-r--r-- | src/rust/uwb_uci_packets/uci_packets.pdl | 9 |
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 |