diff --git a/examples/ping_360.rs b/examples/ping_360.rs new file mode 100644 index 000000000..134cacd8e --- /dev/null +++ b/examples/ping_360.rs @@ -0,0 +1,50 @@ +mod common; +use common::{create_port, Port}; + +use bluerobotics_ping::{ + device::{Ping360, PingDevice}, + error::PingError, +}; + +#[tokio::main] +async fn main() -> Result<(), PingError> { + println!("Parsing user provided values and creating port..."); + let port = create_port().await; + + println!("Creating your Ping 360 device"); + let ping360 = match port { + Port::Serial(port) => Ping360::new(port), + Port::Udp(port) => Ping360::new(port), + }; + + println!("Reading transducer data:"); + let p = ping360 + .transducer(1, 1, 0, 500, 20000, 700, 1000, 1, 0) + .await?; + println!("mode: {}", p.mode); + println!("gain_setting: {}", p.gain_setting); + println!("angle: {}", p.angle); + println!("transmit_duration: {}", p.transmit_duration); + println!("sample_period: {}", p.sample_period); + println!("transmit_frequency: {}", p.transmit_frequency); + println!("number_of_samples: {}", p.number_of_samples); + println!("data_length: {}", p.data_length); + println!("data: {:?}", p.data.len()); + + // Creating futures to read different device Properties + let (protocol_version_struct, device_information) = + tokio::try_join!(ping360.protocol_version(), ping360.device_information()) + .expect("Failed to join results"); + + let version = format!( + "{}.{}.{}", + protocol_version_struct.version_major, + protocol_version_struct.version_minor, + protocol_version_struct.version_patch + ); + + println!("Protocol version is: {version}"); + println!("Device information: {device_information:?}"); + + Ok(()) +} \ No newline at end of file