gmt_dos_clients_optics_state/
lib.rs1#[cfg(feature = "gmt_dos-clients_arrow")]
2pub mod arrow;
3mod state;
4pub use state::{MirrorState, OpticalState, SegmentState, units};
5
6use interface::UniqueIdentifier;
7pub enum M1State {}
10impl UniqueIdentifier for M1State {
11 type DataType = MirrorState;
12 const PORT: u16 = 50_012;
13}
14pub enum M2State {}
16impl UniqueIdentifier for M2State {
17 type DataType = MirrorState;
18 const PORT: u16 = 50_013;
19}
20
21pub enum OpticsState {}
22impl UniqueIdentifier for OpticsState {
23 type DataType = OpticalState;
24}
25
26#[cfg(test)]
27mod tests {
28 use interface::{Data, Read, Update};
29
30 use super::*;
31
32 #[test]
33 fn reset_state() {
34 let zp = OpticalState::m2(MirrorState::default().set_segment_state(
35 1,
36 SegmentState::rbms({
37 let mut rbms = vec![0f64; 7];
38 rbms[0] = 1e-6;
39 rbms
40 }),
41 ));
42 let mut state = OpticalState::default().set_zero_point(zp);
43 dbg!(&state);
44
45 let m2_state = MirrorState::default().set_segment_state(
46 1,
47 SegmentState::rbms({
48 let mut rbms = vec![0f64; 7];
49 rbms[0] = -0.25e-6;
50 rbms[1] = -1e-6;
51 rbms
52 }),
53 ).set_segment_state(
54 2,
55 SegmentState::rbms({
56 let mut rbms = vec![0f64; 7];
57 rbms[1] = -1e-6;
58 rbms
59 }),
60 );
61 dbg!(&m2_state);
62 <_ as Read<M2State>>::read(&mut state, Data::new(m2_state.clone()));
63 state.update();
64 dbg!(&state);
65 <_ as Read<M2State>>::read(&mut state, Data::new(m2_state));
66 state.update();
67 dbg!(&state);
68 }
69
70 }