tof_control/rb_control/
rb_reset.rs1use std::thread;
2use std::time::Duration;
3
4use crate::constant::*;
5use crate::memory::{read_control_reg, write_control_reg};
6use crate::helper::rb_type::RBError;
7use crate::rb_control::{rb_temp, rb_vcp, rb_ph, rb_mag, rb_dac, rb_gpioe, rb_clk};
8
9pub fn reset() -> Result<(), RBError> {
10 reset_gpioe()?;
11 reset_clk_synth()?;
12 reset_dac()?;
13
14 thread::sleep(Duration::from_millis(500));
15 reset_daq()?;
16
17 reset_sensor()?;
18
19 Ok(())
20}
21
22fn reset_gpioe() -> Result<(), RBError> {
23 rb_gpioe::reset_gpioe()?;
24 rb_gpioe::initialize_gpioe()?;
25 rb_gpioe::rf_input_select_gpioe(2)?;
26 rb_gpioe::enable_si5345b_gpioe()?;
27
28 Ok(())
29}
30
31fn reset_clk_synth() -> Result<(), RBError> {
32 rb_clk::reset_clk_synth(0)?;
33
34 Ok(())
35}
36
37fn reset_dac() -> Result<(), RBError> {
38 rb_dac::set_dac()?;
39
40 Ok(())
41}
42
43fn reset_daq() -> Result<(), RBError> {
44 disable_daq_fragment()?;
46 enable_spike_clean()?;
48 enable_8_channels()?;
50 enable_9th_channel()?;
52 start_drs()?;
54
55 Ok(())
56}
57fn disable_daq_fragment() -> Result<(), RBError> {
58 let value = read_control_reg(DAQ_FRAGMENT_EN)?;
59 if (value & 0x01) == 0x01 {
60 write_control_reg(DAQ_FRAGMENT_EN, 0x00)?;
61 }
62
63 Ok(())
64}
65fn enable_spike_clean() -> Result<(), RBError> {
66 let mut value = read_control_reg(EN_SPIKE_REMOVAL)?;
67 value = value | 0x400000;
68 if ((value >> 22) & 0x01) != 0x01 {
69 write_control_reg(EN_SPIKE_REMOVAL, value)?;
70 }
71
72 Ok(())
73}
74fn enable_8_channels() -> Result<(), RBError> {
75 let mut value = read_control_reg(READOUT_MASK)?;
76 value = value | 0x1FF;
77 if (value & 0x1FF) != 0x1FF {
78 write_control_reg(READOUT_MASK, value)?;
79 }
80
81 Ok(())
82}
83fn enable_9th_channel() -> Result<(), RBError> {
84 let mut value = read_control_reg(READOUT_MASK)?;
85 value = value | 0x3FF;
86 if ((value >> 9) & 0x01) != 0x01 {
87 write_control_reg(READOUT_MASK, value)?;
88 }
89
90 Ok(())
91}
92fn start_drs() -> Result<(), RBError> {
93 write_control_reg(START, 0x01)?;
94
95 Ok(())
96}
97
98fn reset_sensor() -> Result<(), RBError> {
99 rb_temp::config_temp()?;
101 rb_vcp::config_vcp()?;
103 rb_ph::config_ph()?;
105 rb_mag::config_mag()?;
107
108 Ok(())
109}