-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathmain.rs
More file actions
110 lines (90 loc) · 2.86 KB
/
main.rs
File metadata and controls
110 lines (90 loc) · 2.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
use axparameter::{error::ParameterError, parameter::Parameter, types::ControlWord};
use log::{error, info};
const APP_NAME: &str = "axparameter_example";
fn main() {
acap_logging::init_logger();
let main_loop = glib::MainLoop::new(None, false);
glib::unix_signal_add_once(15, {
let main_loop = main_loop.clone();
move || main_loop.quit()
});
glib::unix_signal_add_once(2, {
let main_loop = main_loop.clone();
move || main_loop.quit()
});
info!("Starting {APP_NAME}");
let parameter = Parameter::new(APP_NAME).unwrap();
if let Err(err) = parameter.add("Parameter", None, "param".to_string()) {
if !err.matches::<ParameterError>(ParameterError::ParamAdded) {
error!("Failed {}", err);
return;
}
}
if let Err(err) = parameter.add("ParameterTwo", None, "param_two".to_string()) {
if !err.matches::<ParameterError>(ParameterError::ParamAdded) {
error!("Failed {}", err);
return;
}
}
if let Err(err) = parameter.add("ParameterThree", None, "param_three".to_string()) {
if !err.matches::<ParameterError>(ParameterError::ParamAdded) {
error!("Failed {}", err);
return;
}
}
if let Err(err) = parameter.add(
"ParameterFour",
Some(ControlWord::ReadOnly),
"param_four".to_string(),
) {
if !err.matches::<ParameterError>(ParameterError::ParamAdded) {
error!("Failed {}", err);
return;
}
}
let value: String = match parameter.get("Parameter") {
Ok(value) => value,
Err(err) => {
error!("Failed {}", err);
return;
}
};
info!("The value of \"Parameter\" is \"{}\"", value);
let value: String = match parameter.get("ParameterFour") {
Ok(value) => value,
Err(err) => {
error!("Failed {}", err);
return;
}
};
info!("The value of \"ParameterFour\" is \"{}\"", value);
if let Err(err) = parameter.remove("ParameterThree") {
error!("Failed {}", err);
return;
}
if let Err(err) = parameter.set("Parameter", "param_set".to_string(), true) {
error!("Failed {}", err);
return;
}
if let Ok(()) = parameter.set("ParameterFour", "param_four_set".to_string(), true) {
error!("Failed ParameterFour should be ReadOnly");
return;
}
if let Ok(list) = parameter.list() {
for param in list {
info!("Parameter in list: \"{}\"", param);
}
} else {
error!("Failed {}", value);
return;
}
if let Err(err) = parameter.register_callback("Parameter", |_name, _value| {
info!("In Parameter callback");
}) {
error!("Failed {}", err);
return;
}
main_loop.run();
}
#[cfg(test)]
mod tests;