dis_rs/common/sees/
writer.rs1use 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}