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