1use crate::prelude::*;
5
6#[cfg(feature="tofcontrol")]
7use tof_control::helper::rb_type::{
8 RBMag,
9 RBTemp,
10 RBPh,
11 RBVcp
12};
13
14#[derive(Debug, Copy, Clone, PartialEq)]
20#[cfg_attr(feature="pybindings", pyclass)]
21pub struct RBMoniData {
22 pub board_id : u8,
23 pub rate : u16,
24 pub tmp_drs : f32,
25 pub tmp_clk : f32,
26 pub tmp_adc : f32,
27 pub tmp_zynq : f32,
28 pub tmp_lis3mdltr : f32,
29 pub tmp_bm280 : f32,
30 pub pressure : f32,
31 pub humidity : f32,
32 pub mag_x : f32,
33 pub mag_y : f32,
34 pub mag_z : f32,
35 pub drs_dvdd_voltage : f32,
36 pub drs_dvdd_current : f32,
37 pub drs_dvdd_power : f32,
38 pub p3v3_voltage : f32,
39 pub p3v3_current : f32,
40 pub p3v3_power : f32,
41 pub zynq_voltage : f32,
42 pub zynq_current : f32,
43 pub zynq_power : f32,
44 pub p3v5_voltage : f32,
45 pub p3v5_current : f32,
46 pub p3v5_power : f32,
47 pub adc_dvdd_voltage : f32,
48 pub adc_dvdd_current : f32,
49 pub adc_dvdd_power : f32,
50 pub adc_avdd_voltage : f32,
51 pub adc_avdd_current : f32,
52 pub adc_avdd_power : f32,
53 pub drs_avdd_voltage : f32,
54 pub drs_avdd_current : f32,
55 pub drs_avdd_power : f32,
56 pub n1v5_voltage : f32,
57 pub n1v5_current : f32,
58 pub n1v5_power : f32,
59 pub timestamp : u64
63}
64
65impl RBMoniData {
66
67 pub fn new() -> Self {
68 Self {
69 board_id : 0,
70 rate : 0,
71 tmp_drs : f32::MAX,
72 tmp_clk : f32::MAX,
73 tmp_adc : f32::MAX,
74 tmp_zynq : f32::MAX,
75 tmp_lis3mdltr : f32::MAX,
76 tmp_bm280 : f32::MAX,
77 pressure : f32::MAX,
78 humidity : f32::MAX,
79 mag_x : f32::MAX,
80 mag_y : f32::MAX,
81 mag_z : f32::MAX,
82 drs_dvdd_voltage : f32::MAX,
83 drs_dvdd_current : f32::MAX,
84 drs_dvdd_power : f32::MAX,
85 p3v3_voltage : f32::MAX,
86 p3v3_current : f32::MAX,
87 p3v3_power : f32::MAX,
88 zynq_voltage : f32::MAX,
89 zynq_current : f32::MAX,
90 zynq_power : f32::MAX,
91 p3v5_voltage : f32::MAX,
92 p3v5_current : f32::MAX,
93 p3v5_power : f32::MAX,
94 adc_dvdd_voltage : f32::MAX,
95 adc_dvdd_current : f32::MAX,
96 adc_dvdd_power : f32::MAX,
97 adc_avdd_voltage : f32::MAX,
98 adc_avdd_current : f32::MAX,
99 adc_avdd_power : f32::MAX,
100 drs_avdd_voltage : f32::MAX,
101 drs_avdd_current : f32::MAX,
102 drs_avdd_power : f32::MAX,
103 n1v5_voltage : f32::MAX,
104 n1v5_current : f32::MAX,
105 n1v5_power : f32::MAX,
106 timestamp : 0,
107 }
108 }
109
110 #[cfg(feature = "tofcontrol")]
111 pub fn add_rbvcp(&mut self, rb_vcp : &RBVcp) {
112 self.drs_dvdd_voltage = rb_vcp.drs_dvdd_vcp[0] ;
113 self.drs_dvdd_current = rb_vcp.drs_dvdd_vcp[1] ;
114 self.drs_dvdd_power = rb_vcp.drs_dvdd_vcp[2] ;
115 self.p3v3_voltage = rb_vcp.p3v3_vcp[0] ;
116 self.p3v3_current = rb_vcp.p3v3_vcp[1] ;
117 self.p3v3_power = rb_vcp.p3v3_vcp[2] ;
118 self.zynq_voltage = rb_vcp.zynq_vcp[0] ;
119 self.zynq_current = rb_vcp.zynq_vcp[1] ;
120 self.zynq_power = rb_vcp.zynq_vcp[2] ;
121 self.p3v5_voltage = rb_vcp.p3v5_vcp[0] ;
122 self.p3v5_current = rb_vcp.p3v5_vcp[1] ;
123 self.p3v5_power = rb_vcp.p3v5_vcp[2] ;
124 self.adc_dvdd_voltage = rb_vcp.adc_dvdd_vcp[0] ;
125 self.adc_dvdd_current = rb_vcp.adc_dvdd_vcp[1] ;
126 self.adc_dvdd_power = rb_vcp.adc_dvdd_vcp[2] ;
127 self.adc_avdd_voltage = rb_vcp.adc_avdd_vcp[0] ;
128 self.adc_avdd_current = rb_vcp.adc_avdd_vcp[1] ;
129 self.adc_avdd_power = rb_vcp.adc_avdd_vcp[2] ;
130 self.drs_avdd_voltage = rb_vcp.drs_avdd_vcp[0] ;
131 self.drs_avdd_current = rb_vcp.drs_avdd_vcp[1] ;
132 self.drs_avdd_power = rb_vcp.drs_avdd_vcp[2] ;
133 self.n1v5_voltage = rb_vcp.n1v5_vcp[0] ;
134 self.n1v5_current = rb_vcp.n1v5_vcp[1] ;
135 self.n1v5_power = rb_vcp.n1v5_vcp[2] ;
136 }
137
138 #[cfg(feature = "tofcontrol")]
139 pub fn add_rbph(&mut self, rb_ph : &RBPh) {
140 self.pressure = rb_ph.pressure;
141 self.humidity = rb_ph.humidity;
142 }
143 #[cfg(feature = "tofcontrol")]
144 pub fn add_rbtemp(&mut self, rb_temp : &RBTemp) {
145 self.tmp_drs = rb_temp.drs_temp ;
146 self.tmp_clk = rb_temp.clk_temp ;
147 self.tmp_adc = rb_temp.adc_temp ;
148 self.tmp_zynq = rb_temp.zynq_temp ;
149 self.tmp_lis3mdltr = rb_temp.lis3mdltr_temp;
150 self.tmp_bm280 = rb_temp.bme280_temp ;
151 }
152
153 #[cfg(feature = "tofcontrol")]
154 pub fn add_rbmag(&mut self, rb_mag : &RBMag) {
155 self.mag_x = rb_mag.mag_xyz[0];
156 self.mag_y = rb_mag.mag_xyz[1];
157 self.mag_z = rb_mag.mag_xyz[2];
158 }
159
160 pub fn get_mag_tot(&self) -> f32 {
161 (self.mag_x.powi(2) + self.mag_y.powi(2) + self.mag_z.powi(2)).sqrt()
162 }
163}
164
165impl Default for RBMoniData {
166 fn default() -> Self {
167 Self::new()
168 }
169}
170
171impl fmt::Display for RBMoniData {
172 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
173 write!(f, "<RBMoniData:
174 BOARD ID {}
175 RATE {} [Hz]
176 ** Temperatures **
177 DRS TMP {:.3} [\u{00B0}C]
178 CLK TMP {:.3} [\u{00B0}C]
179 ADC TMP {:.3} [\u{00B0}C]
180 ZYNQ TMP {:.3} [\u{00B0}C]
181 LIS3MDLTR TMP {:.3} [\u{00B0}C]
182 BM280 TMP {:.3} [\u{00B0}C]
183 ** Ambience **
184 PRESSURE {:.3} [hPa]
185 HUMIDITY {:.3} [%]
186 MAG_X , MAG_Y, MAG_Z, MAG_TOT:
187 |-> {:.3} [G] | {:.3} [G] | {:.3} [G] | {:.3} [G]
188 ** Power **
189 ZYNQ 3.3V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]
190 3.3V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]
191 3.5V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]
192 -1.5V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]
193 DRS4 Digital 2.5V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]
194 DRS4 Analog 2.5V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]
195 ADC Digital 2.5V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]
196 ADC Analog 3.0V Power: {:.3} [V] | {:.3} [A] | {:.3} [W]>",
197 self.board_id ,
198 self.rate ,
199 self.tmp_drs ,
200 self.tmp_clk ,
201 self.tmp_adc ,
202 self.tmp_zynq ,
203 self.tmp_lis3mdltr ,
204 self.tmp_bm280 ,
205 self.pressure ,
206 self.humidity ,
207 self.mag_x ,
208 self.mag_y ,
209 self.mag_z ,
210 self.get_mag_tot() ,
211 self.zynq_voltage ,
212 self.zynq_current ,
213 self.zynq_power ,
214 self.p3v3_voltage ,
215 self.p3v3_current ,
216 self.p3v3_power ,
217 self.p3v5_voltage ,
218 self.p3v5_current ,
219 self.p3v5_power ,
220 self.n1v5_voltage ,
221 self.n1v5_current ,
222 self.n1v5_power ,
223 self.drs_dvdd_voltage,
224 self.drs_dvdd_current,
225 self.drs_dvdd_power ,
226 self.drs_avdd_voltage,
227 self.drs_avdd_current,
228 self.drs_avdd_power ,
229 self.adc_dvdd_voltage,
230 self.adc_dvdd_current,
231 self.adc_dvdd_power ,
232 self.adc_avdd_voltage,
233 self.adc_avdd_current,
234 self.adc_avdd_power )
235 }
236}
237
238impl MoniData for RBMoniData {
239
240 fn get_timestamp(&self) -> u64 {
241 self.timestamp
242 }
243
244 fn set_timestamp(&mut self, ts : u64) {
245 self.timestamp = ts
246 }
247
248 fn get_board_id(&self) -> u8 {
249 self.board_id
250 }
251
252 fn get(&self, varname : &str) -> Option<f32> {
254 match varname {
255 "board_id" => Some(self.board_id as f32),
256 "rate" => Some(self.rate as f32 ),
257 "tmp_drs" => Some(self.tmp_drs ),
258 "tmp_clk" => Some(self.tmp_clk ),
259 "tmp_adc" => Some(self.tmp_adc ),
260 "tmp_zynq" => Some(self.tmp_zynq ),
261 "tmp_lis3mdltr" => Some(self.tmp_lis3mdltr ),
262 "tmp_bm280" => Some(self.tmp_bm280 ),
263 "pressure" => Some(self.pressure ),
264 "humidity" => Some(self.humidity ),
265 "mag_x" => Some(self.mag_x ),
266 "mag_y" => Some(self.mag_y ),
267 "mag_z" => Some(self.mag_z ),
268 "mag_tot" => Some(self.get_mag_tot() ),
269 "drs_dvdd_voltage" => Some(self.drs_dvdd_voltage ),
270 "drs_dvdd_current" => Some(self.drs_dvdd_current ),
271 "drs_dvdd_power" => Some(self.drs_dvdd_power ),
272 "p3v3_voltage" => Some(self.p3v3_voltage ),
273 "p3v3_current" => Some(self.p3v3_current ),
274 "p3v3_power" => Some(self.p3v3_power ),
275 "zynq_voltage" => Some(self.zynq_voltage ),
276 "zynq_current" => Some(self.zynq_current ),
277 "zynq_power" => Some(self.zynq_power ),
278 "p3v5_voltage" => Some(self.p3v5_voltage ),
279 "p3v5_current" => Some(self.p3v5_current ),
280 "p3v5_power" => Some(self.p3v5_power ),
281 "adc_dvdd_voltage" => Some(self.adc_dvdd_voltage ),
282 "adc_dvdd_current" => Some(self.adc_dvdd_current ),
283 "adc_dvdd_power" => Some(self.adc_dvdd_power ),
284 "adc_avdd_voltage" => Some(self.adc_avdd_voltage ),
285 "adc_avdd_current" => Some(self.adc_avdd_current ),
286 "adc_avdd_power" => Some(self.adc_avdd_power ),
287 "drs_avdd_voltage" => Some(self.drs_avdd_voltage ),
288 "drs_avdd_current" => Some(self.drs_avdd_current ),
289 "drs_avdd_power" => Some(self.drs_avdd_power ),
290 "n1v5_voltage" => Some(self.n1v5_voltage ),
291 "n1v5_current" => Some(self.n1v5_current ),
292 "n1v5_power" => Some(self.n1v5_power ),
293 "timestamp" => Some(self.timestamp as f32),
294 _ => None
295 }
296 }
297
298 fn keys() -> Vec<&'static str> {
300 vec![
301 "board_id" ,
302 "rate" ,
303 "tmp_drs" ,
304 "tmp_clk" ,
305 "tmp_adc" ,
306 "tmp_zynq" ,
307 "tmp_lis3mdltr" ,
308 "tmp_bm280" ,
309 "pressure" ,
310 "humidity" ,
311 "mag_x" ,
312 "mag_y" ,
313 "mag_z" ,
314 "drs_dvdd_voltage",
315 "drs_dvdd_current",
316 "drs_dvdd_power" ,
317 "p3v3_voltage" ,
318 "p3v3_current" ,
319 "p3v3_power" ,
320 "zynq_voltage" ,
321 "zynq_current" ,
322 "zynq_power" ,
323 "p3v5_voltage" ,
324 "p3v5_current" ,
325 "p3v5_power" ,
326 "adc_dvdd_voltage",
327 "adc_dvdd_current",
328 "adc_dvdd_power" ,
329 "adc_avdd_voltage",
330 "adc_avdd_current",
331 "adc_avdd_power" ,
332 "drs_avdd_voltage",
333 "drs_avdd_current",
334 "drs_avdd_power" ,
335 "n1v5_voltage" ,
336 "n1v5_current" ,
337 "timestamp" ,
338 "n1v5_power" ]
339 }
340}
341
342impl TofPackable for RBMoniData {
343 const TOF_PACKET_TYPE : TofPacketType = TofPacketType::RBMoniData;
344}
345
346impl Serialization for RBMoniData {
347
348 const HEAD : u16 = 0xAAAA;
349 const TAIL : u16 = 0x5555;
350 const SIZE : usize = 7 + (36*4) ;
355
356 fn to_bytestream(&self) -> Vec<u8> {
357 let mut stream = Vec::<u8>::with_capacity(Self::SIZE);
358 stream.extend_from_slice(&Self::HEAD.to_le_bytes());
359 stream.extend_from_slice(&self.board_id .to_le_bytes());
360 stream.extend_from_slice(&self.rate .to_le_bytes());
361 stream.extend_from_slice(&self.tmp_drs .to_le_bytes());
362 stream.extend_from_slice(&self.tmp_clk .to_le_bytes());
363 stream.extend_from_slice(&self.tmp_adc .to_le_bytes());
364 stream.extend_from_slice(&self.tmp_zynq .to_le_bytes());
365 stream.extend_from_slice(&self.tmp_lis3mdltr .to_le_bytes());
366 stream.extend_from_slice(&self.tmp_bm280 .to_le_bytes());
367 stream.extend_from_slice(&self.pressure .to_le_bytes());
368 stream.extend_from_slice(&self.humidity .to_le_bytes());
369 stream.extend_from_slice(&self.mag_x .to_le_bytes());
370 stream.extend_from_slice(&self.mag_y .to_le_bytes());
371 stream.extend_from_slice(&self.mag_z .to_le_bytes());
372 stream.extend_from_slice(&0.0_f32 .to_le_bytes());
374 stream.extend_from_slice(&self.drs_dvdd_voltage .to_le_bytes());
375 stream.extend_from_slice(&self.drs_dvdd_current .to_le_bytes());
376 stream.extend_from_slice(&self.drs_dvdd_power .to_le_bytes());
377 stream.extend_from_slice(&self.p3v3_voltage .to_le_bytes());
378 stream.extend_from_slice(&self.p3v3_current .to_le_bytes());
379 stream.extend_from_slice(&self.p3v3_power .to_le_bytes());
380 stream.extend_from_slice(&self.zynq_voltage .to_le_bytes());
381 stream.extend_from_slice(&self.zynq_current .to_le_bytes());
382 stream.extend_from_slice(&self.zynq_power .to_le_bytes());
383 stream.extend_from_slice(&self.p3v5_voltage .to_le_bytes());
384 stream.extend_from_slice(&self.p3v5_current .to_le_bytes());
385 stream.extend_from_slice(&self.p3v5_power .to_le_bytes());
386 stream.extend_from_slice(&self.adc_dvdd_voltage .to_le_bytes());
387 stream.extend_from_slice(&self.adc_dvdd_current .to_le_bytes());
388 stream.extend_from_slice(&self.adc_dvdd_power .to_le_bytes());
389 stream.extend_from_slice(&self.adc_avdd_voltage .to_le_bytes());
390 stream.extend_from_slice(&self.adc_avdd_current .to_le_bytes());
391 stream.extend_from_slice(&self.adc_avdd_power .to_le_bytes());
392 stream.extend_from_slice(&self.drs_avdd_voltage .to_le_bytes());
393 stream.extend_from_slice(&self.drs_avdd_current .to_le_bytes());
394 stream.extend_from_slice(&self.drs_avdd_power .to_le_bytes());
395 stream.extend_from_slice(&self.n1v5_voltage .to_le_bytes());
396 stream.extend_from_slice(&self.n1v5_current .to_le_bytes());
397 stream.extend_from_slice(&self.n1v5_power .to_le_bytes());
398 stream.extend_from_slice(&Self::TAIL.to_le_bytes());
399 stream
400 }
401
402 fn from_bytestream(stream : &Vec<u8>,
403 pos : &mut usize)
404 -> Result<RBMoniData, SerializationError>{
405 let mut moni_data = Self::new();
406 Self::verify_fixed(stream, pos)?;
407 moni_data.board_id = parse_u8( stream, pos);
408 moni_data.rate = parse_u16(stream, pos);
409 moni_data.tmp_drs = parse_f32(stream, pos);
410 moni_data.tmp_clk = parse_f32(stream, pos);
411 moni_data.tmp_adc = parse_f32(stream, pos);
412 moni_data.tmp_zynq = parse_f32(stream, pos);
413 moni_data.tmp_lis3mdltr = parse_f32(stream, pos);
414 moni_data.tmp_bm280 = parse_f32(stream, pos);
415 moni_data.pressure = parse_f32(stream, pos);
416 moni_data.humidity = parse_f32(stream, pos);
417 moni_data.mag_x = parse_f32(stream, pos);
418 moni_data.mag_y = parse_f32(stream, pos);
419 moni_data.mag_z = parse_f32(stream, pos);
420 *pos += 4;
422 moni_data.drs_dvdd_voltage = parse_f32(stream, pos);
423 moni_data.drs_dvdd_current = parse_f32(stream, pos);
424 moni_data.drs_dvdd_power = parse_f32(stream, pos);
425 moni_data.p3v3_voltage = parse_f32(stream, pos);
426 moni_data.p3v3_current = parse_f32(stream, pos);
427 moni_data.p3v3_power = parse_f32(stream, pos);
428 moni_data.zynq_voltage = parse_f32(stream, pos);
429 moni_data.zynq_current = parse_f32(stream, pos);
430 moni_data.zynq_power = parse_f32(stream, pos);
431 moni_data.p3v5_voltage = parse_f32(stream, pos);
432 moni_data.p3v5_current = parse_f32(stream, pos);
433 moni_data.p3v5_power = parse_f32(stream, pos);
434 moni_data.adc_dvdd_voltage = parse_f32(stream, pos);
435 moni_data.adc_dvdd_current = parse_f32(stream, pos);
436 moni_data.adc_dvdd_power = parse_f32(stream, pos);
437 moni_data.adc_avdd_voltage = parse_f32(stream, pos);
438 moni_data.adc_avdd_current = parse_f32(stream, pos);
439 moni_data.adc_avdd_power = parse_f32(stream, pos);
440 moni_data.drs_avdd_voltage = parse_f32(stream, pos);
441 moni_data.drs_avdd_current = parse_f32(stream, pos);
442 moni_data.drs_avdd_power = parse_f32(stream, pos);
443 moni_data.n1v5_voltage = parse_f32(stream, pos);
444 moni_data.n1v5_current = parse_f32(stream, pos);
445 moni_data.n1v5_power = parse_f32(stream, pos);
446 *pos += 2; Ok(moni_data)
448 }
449}
450
451#[cfg(feature = "random")]
452impl FromRandom for RBMoniData {
453
454 fn from_random() -> RBMoniData {
455 let mut moni = RBMoniData::new();
456 let mut rng = rand::rng();
457 moni.board_id = rng.random::<u8>();
458 moni.rate = rng.random::<u16>();
459 moni.tmp_drs = rng.random::<f32>();
460 moni.tmp_clk = rng.random::<f32>();
461 moni.tmp_adc = rng.random::<f32>();
462 moni.tmp_zynq = rng.random::<f32>();
463 moni.tmp_lis3mdltr = rng.random::<f32>();
464 moni.tmp_bm280 = rng.random::<f32>();
465 moni.pressure = rng.random::<f32>();
466 moni.humidity = rng.random::<f32>();
467 moni.mag_x = rng.random::<f32>();
468 moni.mag_y = rng.random::<f32>();
469 moni.mag_z = rng.random::<f32>();
470 moni.drs_dvdd_voltage = rng.random::<f32>();
471 moni.drs_dvdd_current = rng.random::<f32>();
472 moni.drs_dvdd_power = rng.random::<f32>();
473 moni.p3v3_voltage = rng.random::<f32>();
474 moni.p3v3_current = rng.random::<f32>();
475 moni.p3v3_power = rng.random::<f32>();
476 moni.zynq_voltage = rng.random::<f32>();
477 moni.zynq_current = rng.random::<f32>();
478 moni.zynq_power = rng.random::<f32>();
479 moni.p3v5_voltage = rng.random::<f32>();
480 moni.p3v5_current = rng.random::<f32>();
481 moni.p3v5_power = rng.random::<f32>();
482 moni.adc_dvdd_voltage = rng.random::<f32>();
483 moni.adc_dvdd_current = rng.random::<f32>();
484 moni.adc_dvdd_power = rng.random::<f32>();
485 moni.adc_avdd_voltage = rng.random::<f32>();
486 moni.adc_avdd_current = rng.random::<f32>();
487 moni.adc_avdd_power = rng.random::<f32>();
488 moni.drs_avdd_voltage = rng.random::<f32>();
489 moni.drs_avdd_current = rng.random::<f32>();
490 moni.drs_avdd_power = rng.random::<f32>();
491 moni.n1v5_voltage = rng.random::<f32>();
492 moni.n1v5_current = rng.random::<f32>();
493 moni.n1v5_power = rng.random::<f32>();
494 moni.timestamp = 0;
496 moni
497 }
498}
499
500#[cfg(feature="pybindings")]
501#[pymethods]
502impl RBMoniData {
503
504 #[getter]
505 #[pyo3(name="mag_tot")]
506 fn get_mag_tot_py(&self) -> f32 {
507 self.get_mag_tot()
508 }
509
510 #[getter]
511 fn get_rate (&self) -> u16 {
512 self.rate
513 }
514
515 #[getter]
516 fn get_tmp_drs (&self) -> f32 {
517 self.tmp_drs
518 }
519
520 #[getter]
521 fn get_tmp_clk (&self) -> f32 {
522 self.tmp_clk
523 }
524
525
526 #[getter]
527 fn get_tmp_adc (&self) -> f32 {
528 self.tmp_adc
529 }
530
531 #[getter]
532 fn get_tmp_zynq (&self) -> f32 {
533 self.tmp_zynq
534 }
535
536 #[getter]
537 fn get_tmp_lis3mdltr (&self) -> f32 {
538 self.tmp_lis3mdltr
539 }
540
541 #[getter]
542 fn get_tmp_bm280 (&self) -> f32 {
543 self.tmp_bm280
544 }
545
546 #[getter]
547 fn get_pressure (&self) -> f32 {
548 self.pressure
549 }
550
551 #[getter]
552 fn get_humidity (&self) -> f32 {
553 self.humidity
554 }
555
556 #[getter]
557 fn get_mag_x (&self) -> f32 {
558 self.mag_x
559 }
560
561 #[getter]
562 fn get_mag_y (&self) -> f32 {
563 self.mag_y
564 }
565
566 #[getter]
567 fn get_mag_z (&self) -> f32 {
568 self.mag_z
569 }
570
571 #[getter]
572 fn get_drs_dvdd_voltage (&self) -> f32 {
573 self.drs_dvdd_voltage
574 }
575
576 #[getter]
577 fn get_drs_dvdd_current (&self) -> f32 {
578 self.drs_dvdd_current
579 }
580
581 #[getter]
582 fn get_drs_dvdd_power (&self) -> f32 {
583 self.drs_dvdd_power
584 }
585
586 #[getter]
587 fn get_p3v3_voltage (&self) -> f32 {
588 self.p3v3_voltage
589 }
590
591 #[getter]
592 fn get_p3v3_current (&self) -> f32 {
593 self.p3v3_current
594 }
595
596 #[getter]
597 fn get_p3v3_power (&self) -> f32 {
598 self.p3v3_power
599 }
600
601 #[getter]
602 fn get_zynq_voltage (&self) -> f32 {
603 self.zynq_voltage
604 }
605
606 #[getter]
607 fn get_zynq_current (&self) -> f32 {
608 self.zynq_current
609 }
610
611 #[getter]
612 fn get_zynq_power (&self) -> f32 {
613 self.zynq_power
614 }
615
616 #[getter]
617 fn get_p3v5_voltage (&self) -> f32 {
618 self.p3v5_voltage
619 }
620
621 #[getter]
622 fn get_p3v5_current (&self) -> f32 {
623 self.p3v5_current
624 }
625
626 #[getter]
627 fn get_p3v5_power (&self) -> f32 {
628 self.p3v5_power
629 }
630
631 #[getter]
632 fn get_adc_dvdd_voltage (&self) -> f32 {
633 self.adc_dvdd_voltage
634 }
635
636 #[getter]
637 fn get_adc_dvdd_current (&self) -> f32 {
638 self.adc_dvdd_current
639 }
640
641 #[getter]
642 fn get_adc_dvdd_power (&self) -> f32 {
643 self.adc_dvdd_power
644 }
645
646 #[getter]
647 fn get_adc_avdd_voltage (&self) -> f32 {
648 self.adc_avdd_voltage
649 }
650
651 #[getter]
652 fn get_adc_avdd_current (&self) -> f32 {
653 self.adc_avdd_current
654 }
655
656 #[getter]
657 fn get_adc_avdd_power (&self) -> f32 {
658 self.adc_avdd_power
659 }
660
661 #[getter]
662 fn get_drs_avdd_voltage (&self) -> f32 {
663 self.drs_avdd_voltage
664 }
665
666 #[getter]
667 fn get_drs_avdd_current (&self) -> f32 {
668 self.drs_avdd_current
669 }
670
671 #[getter]
672 fn get_drs_avdd_power (&self) -> f32 {
673 self.drs_avdd_power
674 }
675
676 #[getter]
677 fn get_n1v5_voltage (&self) -> f32 {
678 self.n1v5_voltage
679 }
680
681 #[getter]
682 fn get_n1v5_current (&self) -> f32 {
683 self.n1v5_current
684 }
685
686 #[getter]
687 fn get_n1v5_power (&self) -> f32 {
688 self.n1v5_power
689 }
690
691 #[getter]
692 fn get_timestamp (&self) -> u64 {
693 self.timestamp
694 }
695}
696
697moniseries!(RBMoniDataSeries, RBMoniData);
700
701#[cfg(feature="pybindings")]
702pythonize_packable!(RBMoniData);
703
704#[cfg(feature="pybindings")]
705pythonize_monidata!(RBMoniData);
706
707#[test]
710#[cfg(feature = "random")]
711fn monidata_rbmonidata() {
712 let data = RBMoniData::from_random();
713 for k in RBMoniData::keys() {
714 assert!(data.get(k).is_some());
715 }
716 assert_eq!(data.get_board_id(), data.board_id);
717}
718