maps/
maps.rs

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}