gondola_core/packets/
tracker_daqtemp.rs1use crate::prelude::*;
5
6#[cfg_attr(feature="pybindings", pyclass)]
9pub struct TrackerDAQTempPacket {
10 pub telemetry_header : TelemetryPacketHeader,
11 pub tracker_header : TrackerHeader,
12 pub rom_id : [u64;256],
13 pub temp : [u16;256]
14}
15
16impl fmt::Display for TrackerDAQTempPacket {
17 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18 let mut repr = String::from("<TrackerDAQTempPacket");
19 repr += &(format!("\n {}", self.telemetry_header));
20 repr += &(format!("\n {}", self.tracker_header));
21 repr += "\n*** ROM ID ***";
22 repr += &(format!("\n {:?}", self.rom_id));
23 repr += "\n*** TEMP ***";
24 repr += &(format!("\n {:?}>", self.temp));
25 write!(f, "{}", repr)
26 }
27}
28
29impl TrackerDAQTempPacket {
30 pub fn new() -> Self {
31 Self {
32 telemetry_header : TelemetryPacketHeader::new(),
33 tracker_header : TrackerHeader::new(),
34 rom_id : [0;256],
35 temp : [0;256]
36 }
37 }
38}
39
40impl Serialization for TrackerDAQTempPacket {
41 fn from_bytestream(stream: &Vec<u8>,
42 pos: &mut usize)
43 -> Result<Self, SerializationError> {
44 let mut tp = TrackerDAQTempPacket::new();
45 tp.tracker_header = TrackerHeader::from_bytestream(stream, pos)?;
46 if tp.tracker_header.packet_id != 0x09 {
47 error!("This is not a TrackerDAQTempPacket, but has packet_id {} instead!", tp.tracker_header.packet_id);
48 return Err(SerializationError::IncorrectPacketType);
49 }
50 debug!("tracker header {}", tp.tracker_header);
51 if stream.len() == *pos as usize {
52 error!("Packet contains only header!");
53 return Ok(tp);
54 }
55 *pos -= 1;
61 let dummy64 = 0u64;
62 let dummy16 = 0u16;
63 error!("{}", tp.tracker_header);
64 error!("Expected of the packet {}", (tp.tracker_header.length as usize)/2);
65 for k in 0..256usize {
66 if k < (tp.tracker_header.length as usize)/2 {
67 tp.rom_id[k] = parse_u64(stream, pos);
68 tp.temp[k] = parse_u16(stream, pos);
69 } else {
70 tp.rom_id[k] = dummy64;
71 tp.temp[k] = dummy16;
72 }
73 }
74 Ok(tp)
75 }
76}
77
78#[cfg(feature="pybindings")]
81#[pymethods]
82impl TrackerDAQTempPacket {
83
84 #[getter]
85 fn get_rom_id(&self) -> [u64;256] {
86 self.rom_id
87 }
88
89 #[getter]
90 fn get_temp(&self) -> [u16;256] {
91 self.temp
92 }
93
94}
95
96#[cfg(feature="pybindings")]
97pythonize_telemetry!(TrackerDAQTempPacket);
98