dis_rs/common/designator/
writer.rs

1use crate::common::designator::model::Designator;
2use crate::common::{Serialize, SerializePdu, SupportedVersion};
3use bytes::{BufMut, BytesMut};
4
5impl SerializePdu for Designator {
6    fn serialize_pdu(&self, _version: SupportedVersion, buf: &mut BytesMut) -> u16 {
7        let designating_id_bytes = self.designating_entity_id.serialize(buf);
8        buf.put_u16(self.system_name.into());
9        let designated_id_bytes = self.designated_entity_id.serialize(buf);
10        buf.put_u16(self.code.into());
11        buf.put_f32(self.power);
12        buf.put_f32(self.wavelength);
13        let spot_wrt_bytes = self.spot_wrt_designated_entity.serialize(buf);
14        let spot_location_bytes = self.spot_location.serialize(buf);
15        buf.put_u8(self.dead_reckoning_algorithm.into());
16        buf.put_u8(0u8);
17        buf.put_u16(0u16);
18        let linear_acceleration_bytes = self.linear_acceleration.serialize(buf);
19
20        designating_id_bytes
21            + 2
22            + designated_id_bytes
23            + 10
24            + spot_wrt_bytes
25            + spot_location_bytes
26            + 4
27            + linear_acceleration_bytes
28    }
29}