diff --git a/tests/mav_frame_tests.rs b/tests/mav_frame_tests.rs index ef20068ffe..d1fac6193f 100644 --- a/tests/mav_frame_tests.rs +++ b/tests/mav_frame_tests.rs @@ -1,6 +1,10 @@ pub mod test_shared; mod mav_frame_tests { + use mavlink::ardupilotmega::MavMessage; + use mavlink::MavFrame; + use mavlink::MavHeader; + // NOTE: No header pub const HEARTBEAT_V2: &[u8] = &[ crate::test_shared::COMMON_MSG_HEADER.sequence, @@ -46,4 +50,53 @@ mod mav_frame_tests { assert_eq!(msg.system_status, heartbeat_msg.system_status); assert_eq!(msg.mavlink_version, heartbeat_msg.mavlink_version); } + + #[test] + pub fn test_deser_ser_message() { + let buf: &mut [u8; 255] = &mut [0; 255]; + + let mavlink_message = mavlink_message(); + let mavlink_frame = new(mavlink_message); + + let _len = mavlink_frame.ser(buf); + + let parsed_mavlink_frame = + MavFrame::::deser(mavlink::MavlinkVersion::V2, buf) + .unwrap(); + + assert_eq!( + format!("{mavlink_frame:?}"), + format!("{parsed_mavlink_frame:?}") + ); + } + + fn mavlink_message() -> mavlink::ardupilotmega::MavMessage { + mavlink::ardupilotmega::MavMessage::LINK_NODE_STATUS( + mavlink::ardupilotmega::LINK_NODE_STATUS_DATA { + timestamp: 92197916, + tx_rate: 0x11223344, + rx_rate: 0x55667788, + messages_sent: 0x99001122, + messages_received: 0x33445566, + messages_lost: 0x77889900, + rx_parse_err: 0x1122, + tx_overflows: 0x3355, + rx_overflows: 0x5566, + tx_buf: 0xff, + rx_buf: 0x11, + }, + ) + } + + fn new(msg: MavMessage) -> MavFrame { + MavFrame { + header: MavHeader { + system_id: 1, + component_id: 2, + sequence: 84, + }, + msg, + protocol_version: mavlink::MavlinkVersion::V2, + } + } }