pub mod stream;
pub use self::stream::Stream;
use std::fmt;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub enum DeviceStatus {
#[default]
Unknown,
Initialized,
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
pub struct FirmwareVersion {
pub major: u32,
pub minor: u32,
}
impl fmt::Display for FirmwareVersion {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}.{}", self.major, self.minor)
}
}
#[derive(Clone, Debug, Default)]
pub struct DeviceInfo {
pub firmware_version: FirmwareVersion,
pub max_dac_rate: u32,
pub min_dac_value: u32,
pub max_dac_value: u32,
pub sample_element_count: u32,
pub bulk_packet_sample_count: u32,
pub current_rate: u32,
pub ringbuffer_capacity: u32,
pub ringbuffer_free_space: u32,
pub output_enabled: bool,
}
impl fmt::Display for DeviceInfo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"LaserCube USB (firmware: {}, max rate: {} Hz, buffer: {}/{})",
self.firmware_version,
self.max_dac_rate,
self.ringbuffer_free_space,
self.ringbuffer_capacity
)
}
}