1use std::time::{Duration, SystemTime, UNIX_EPOCH};
2
3use libmapper_rs::{constants::{mpr_dir, mpr_prop}, device::Device, object::MapperObject};
4
5fn main() {
6 let dev = Device::create("rustmapper");
7 loop {
8 dev.poll_and_block(Duration::from_millis(10));
9 if dev.is_ready() {
10 break;
11 }
12 }
13
14 println!("Device became ready!");
15 let mut sig = dev.create_signal::<f64>("test_sin", mpr_dir::MPR_DIR_OUT);
16 sig.set_property(mpr_prop::MPR_PROP_MIN, -1.0);
17 sig.set_property(mpr_prop::MPR_PROP_MAX, 1.0);
18
19 let debug_sig = dev.create_signal::<f64>("debug_msg", mpr_dir::MPR_DIR_IN);
20
21 assert!(debug_sig.get_property::<f64>(mpr_prop::MPR_PROP_MIN).is_err());
22 loop {
23 dev.poll_and_block(Duration::from_millis(100));
24 let time = ((SystemTime::now()
25 .duration_since(UNIX_EPOCH)
26 .unwrap()
27 .as_millis() as u64) as f64
28 / 1000f64)
29 .sin();
30 sig.set_value_single(&time).unwrap();
31 if debug_sig.get_status().was_set_remote() {
32 println!(
33 "Received debug message: {:?}",
34 debug_sig.get_value_single::<f64>().unwrap()
35 );
36 }
37 }
38}