1use std::time::Duration;
2
3use libmapper_rs::{device::Device, graph::Map};
4
5pub fn 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_a =
16 dev.create_signal::<i32>("output", libmapper_rs::constants::mpr_dir::MPR_DIR_OUT);
17 let sig_b = dev.create_signal::<i32>("input", libmapper_rs::constants::mpr_dir::MPR_DIR_IN);
18 let map = Map::create(&sig_a, &sig_b);
19 map.push();
20 loop {
21 dev.poll_and_block(Duration::from_millis(100));
22 if map.is_ready() {
23 break;
24 }
25 }
26 println!("Map created!");
27 for i in 0..100 {
28 sig_a.set_value_single(&i).unwrap();
29 dev.poll_and_block(Duration::from_millis(10));
30 let val = sig_b
31 .get_value_single::<i32>()
32 .expect("Signal didn't send!");
33 println!("Sent: {}, Received: {}", i, val.0);
34 assert_eq!(i, val.0)
35 }
36}