gondola_core/packets/
tracker_event_echo.rs1use crate::prelude::*;
5
6
7
8#[cfg_attr(feature="pybindings", pyclass)]
9pub struct TrackerEventIDEchoPacket {
10 pub telemetry_header : TelemetryPacketHeader,
11 pub tracker_header : TrackerHeader,
12 pub temp : [u16;12],
13 pub event_id : u32,
14 pub event_id_errors : u16,
15}
16
17impl TrackerEventIDEchoPacket {
18 pub fn new() -> Self {
19 Self {
20 telemetry_header : TelemetryPacketHeader::new(),
21 tracker_header : TrackerHeader::new(),
22 temp : [0;12],
23 event_id : 0,
24 event_id_errors : 0,
25 }
26 }
27}
28
29impl fmt::Display for TrackerEventIDEchoPacket {
30 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
31 let mut repr = String::from("<TrackerEventIDEchoPacket");
32 repr += &(format!("\n {}", self.telemetry_header));
33 repr += &(format!("\n {}", self.tracker_header));
34 repr += "\n*** TEMP ***";
35 repr += &(format!("\n {:?}>", self.temp));
36 write!(f, "{}", repr)
37 }
38}
39
40impl Serialization for TrackerEventIDEchoPacket {
41
42 fn from_bytestream(stream: &Vec<u8>,
43 pos: &mut usize)
44 -> Result<Self, SerializationError> {
45 let mut tp = TrackerEventIDEchoPacket::new();
46 tp.tracker_header = TrackerHeader::from_bytestream(stream, pos)?;
47 if tp.tracker_header.packet_id != 0x03 {
48 error!("This is not a TrackerEventIDEchoPacket, but has packet_id {} instead!", tp.tracker_header.packet_id);
49 return Err(SerializationError::IncorrectPacketType);
50 }
51 if stream.len() == *pos as usize {
52 error!("Packet contains only header!");
53 return Ok(tp);
54 }
55 tp.event_id = parse_u32(stream, pos);
59 tp.event_id_errors = parse_u16(stream, pos);
60 Ok(tp)
61 }
62}
63
64#[cfg(feature="pybindings")]
65#[pymethods]
66impl TrackerEventIDEchoPacket {
67
68
69 #[getter]
70 fn get_temp(&self) -> [u16;12] {
71 self.temp
72 }
73}
74
75#[cfg(feature="pybindings")]
76pythonize_telemetry!(TrackerEventIDEchoPacket);
77