dis_rs/common/sees/
writer.rs

1use crate::sees::model::{PropulsionSystemData, VectoringNozzleSystemData, SEES};
2use crate::{Serialize, SerializePdu, SupportedVersion};
3use bytes::{BufMut, BytesMut};
4
5impl SerializePdu for SEES {
6    fn serialize_pdu(&self, _version: SupportedVersion, buf: &mut BytesMut) -> u16 {
7        let originating_bytes = self.originating_entity_id.serialize(buf);
8        buf.put_u16(self.infrared_signature_representation_index);
9        buf.put_u16(self.acoustic_signature_representation_index);
10        buf.put_u16(self.radar_cross_section_representation_index);
11        buf.put_u16(self.propulsion_systems.len() as u16);
12        buf.put_u16(self.vectoring_nozzle_systems.len() as u16);
13
14        let propulsion_system_bytes = self
15            .propulsion_systems
16            .iter()
17            .map(|system| system.serialize(buf))
18            .sum::<u16>();
19        let vectoring_nozzle_bytes = self
20            .vectoring_nozzle_systems
21            .iter()
22            .map(|system| system.serialize(buf))
23            .sum::<u16>();
24
25        originating_bytes + 10 + propulsion_system_bytes + vectoring_nozzle_bytes
26    }
27}
28
29impl Serialize for PropulsionSystemData {
30    fn serialize(&self, buf: &mut BytesMut) -> u16 {
31        buf.put_f32(self.power_setting);
32        buf.put_f32(self.engine_rpm);
33
34        8
35    }
36}
37
38impl Serialize for VectoringNozzleSystemData {
39    fn serialize(&self, buf: &mut BytesMut) -> u16 {
40        buf.put_f32(self.horizontal_deflection_angle);
41        buf.put_f32(self.vertical_deflection_angle);
42
43        8
44    }
45}