tof_control/
lib.rs

1pub mod constant;
2pub mod helper;
3pub mod device;
4pub mod ltb_control;
5pub mod memory;
6pub mod pb_control;
7pub mod pa_control;
8pub mod rb_control;
9pub mod cpu_control;
10pub mod cpc_control;
11pub mod tcpc_control;
12pub mod switch_control;
13pub mod mtb_control;
14
15// RATMoniData
16use serde_json;
17use serde::{Deserialize, Serialize};
18use crate::helper::{
19    rb_type::RBMoniData,
20    ltb_type::LTBMoniData,
21    pb_type::PBMoniData,
22    pa_type::PAMoniData,
23};
24
25// RAT Data Type
26#[derive(Debug, Serialize, Deserialize)]
27pub struct RATMoniData {
28    pub rb_data: RBMoniData,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub ltb_data: Option<LTBMoniData>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub pb_data: Option<PBMoniData>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub pa_data: Option<PAMoniData>,
35}
36
37impl RATMoniData {
38    pub fn new() -> Self {
39        let rb_data = RBMoniData::new();
40        let sub_board = rb_data.rb_info.sub_board;
41
42        let mut ltb_data = None;
43        if sub_board == 1 {
44            ltb_data = Some(LTBMoniData::new());
45        }
46
47        let mut pb_data = None;
48        let mut pa_data = None;
49        if sub_board == 2 {
50            pb_data = Some(PBMoniData::new());
51            pa_data = Some(PAMoniData::new());
52        }
53
54        Self {
55            rb_data,
56            ltb_data,
57            pb_data,
58            pa_data,
59        }
60    }
61    pub fn print(&self) {
62        println!("RB Data:");
63        println!("{:?}", &self.rb_data);
64        if let Some(ltb_data) = &self.ltb_data {
65            println!("LTB Data:");
66            println!("{:?}", ltb_data);
67        }
68        if let Some(pb_data) = &self.pb_data {
69            println!("PB Data:");
70            println!("{:?}", pb_data);
71        }
72        if let Some(pa_data) = &self.pa_data {
73            println!("PA Data:");
74            println!("{:?}", pa_data);
75        }
76    }
77    pub fn print_json(&self) {
78        match serde_json::to_string(self) {
79            Ok(rat_moni_json) => {
80                println!("{}", rat_moni_json);
81            }
82            Err(e) => {
83                eprintln!("RATMoniData JSON Error: {}", e);
84            }
85        }
86    }
87}
88
89
90