nanonis_rs/client/lockin/
types.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
5pub enum RTSignalMode {
6 #[default]
8 XY = 0,
9 RPhi = 1,
11}
12
13impl From<RTSignalMode> for u32 {
14 fn from(mode: RTSignalMode) -> Self {
15 mode as u32
16 }
17}
18
19impl TryFrom<u32> for RTSignalMode {
20 type Error = crate::error::NanonisError;
21
22 fn try_from(value: u32) -> Result<Self, Self::Error> {
23 match value {
24 0 => Ok(RTSignalMode::XY),
25 1 => Ok(RTSignalMode::RPhi),
26 _ => Err(crate::error::NanonisError::Protocol(format!(
27 "Invalid RTSignalMode value: {}",
28 value
29 ))),
30 }
31 }
32}
33
34#[derive(Debug, Clone)]
36pub struct ModulatorConfig {
37 pub number: i32,
39 pub enabled: bool,
41 pub signal_index: i32,
43 pub phase_register: i32,
45 pub harmonic: i32,
47 pub phase_deg: f32,
49 pub amplitude: f32,
51 pub frequency_hz: f64,
53}
54
55impl Default for ModulatorConfig {
56 fn default() -> Self {
57 Self {
58 number: 1,
59 enabled: false,
60 signal_index: 0,
61 phase_register: 1,
62 harmonic: 1,
63 phase_deg: 0.0,
64 amplitude: 0.0,
65 frequency_hz: 1000.0,
66 }
67 }
68}
69
70#[derive(Debug, Clone)]
72pub struct DemodulatorConfig {
73 pub number: i32,
75 pub signal_index: i32,
77 pub harmonic: i32,
79 pub hp_filter_order: i32,
81 pub hp_filter_cutoff_hz: f32,
83 pub lp_filter_order: i32,
85 pub lp_filter_cutoff_hz: f32,
87 pub phase_register: i32,
89 pub phase_deg: f32,
91 pub sync_filter: bool,
93 pub rt_signal_mode: RTSignalMode,
95}
96
97impl Default for DemodulatorConfig {
98 fn default() -> Self {
99 Self {
100 number: 1,
101 signal_index: 0,
102 harmonic: 1,
103 hp_filter_order: 0,
104 hp_filter_cutoff_hz: 10.0,
105 lp_filter_order: 4,
106 lp_filter_cutoff_hz: 100.0,
107 phase_register: 1,
108 phase_deg: 0.0,
109 sync_filter: false,
110 rt_signal_mode: RTSignalMode::XY,
111 }
112 }
113}
114
115#[derive(Debug, Clone, Copy)]
117pub struct FilterConfig {
118 pub order: i32,
120 pub cutoff_hz: f32,
122}
123
124impl Default for FilterConfig {
125 fn default() -> Self {
126 Self {
127 order: 0,
128 cutoff_hz: 100.0,
129 }
130 }
131}