tof_control/rb_control/
rb_init.rs1use gethostname::gethostname;
2
3use crate::constant::*;
4use crate::helper::rb_type::RBError;
5use crate::memory::{read_control_reg, write_control_reg};
6use crate::rb_control::{rb_temp, rb_vcp, rb_ph, rb_mag, rb_dac};
7
8pub fn initialize() -> Result<(), RBError> {
9 initialize_dac()?;
11 set_board_id()?;
13 initialize_daq()?;
15 initialize_sensor()?;
17
18 Ok(())
19}
20
21fn initialize_dac() -> Result<(), RBError> {
22 rb_dac::set_dac()?;
23
24 Ok(())
25}
26
27fn set_board_id() -> Result<(), RBError> {
28 let hostname = gethostname().into_string()?;
29 let board_id = hostname.replace("tof-rb", "").parse::<u32>()?;
30
31 write_control_reg(BOARD_ID, board_id)?;
32
33 Ok(())
34}
35
36fn initialize_daq() -> Result<(), RBError> {
37 disable_daq_fragment()?;
39
40 enable_spike_clean()?;
42
43 enable_8_channels()?;
45
46 enable_9th_channel()?;
48
49 start_drs()?;
51
52 Ok(())
53}
54
55fn disable_daq_fragment() -> Result<(), RBError> {
56 let value = read_control_reg(DAQ_FRAGMENT_EN)?;
57 if (value & 0x01) == 0x01 {
58 write_control_reg(DAQ_FRAGMENT_EN, 0x00)?;
59 }
60
61 Ok(())
62}
63
64fn enable_spike_clean() -> Result<(), RBError> {
65 let mut value = read_control_reg(EN_SPIKE_REMOVAL)?;
66 value = value | 0x400000;
67 if ((value >> 22) & 0x01) != 0x01 {
68 write_control_reg(EN_SPIKE_REMOVAL, value)?;
69 }
70
71 Ok(())
72}
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}
83
84fn enable_9th_channel() -> Result<(), RBError> {
85 let mut value = read_control_reg(READOUT_MASK)?;
86 value = value | 0x3FF;
87 if ((value >> 9) & 0x01) != 0x01 {
88 write_control_reg(READOUT_MASK, value)?;
89 }
90
91 Ok(())
92}
93
94fn start_drs() -> Result<(), RBError> {
95 write_control_reg(START, 0x01)?;
96
97 Ok(())
98}
99
100fn initialize_sensor() -> Result<(), RBError> {
101 rb_temp::config_temp()?;
103 rb_vcp::config_vcp()?;
105 rb_ph::config_ph()?;
107 rb_mag::config_mag()?;
109
110 Ok(())
111}