use bitflags::bitflags;
bitflags! {
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct MidiPort: u8 {
const DIN = 0x01;
const USB = 0x02;
const BLE = 0x04;
}
}
impl MidiPort {
pub const ALL: Self = Self::DIN.union(Self::USB);
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct MidiOut {
pub data: [u8; 8],
pub len: u8,
pub dest: MidiPort,
}
impl MidiOut {
pub fn new(data: &[u8], dest: MidiPort) -> Self {
let mut buf = [0u8; 8];
let len = data.len().min(8);
buf[..len].copy_from_slice(&data[..len]);
Self {
data: buf,
len: len as u8,
dest,
}
}
pub fn bytes(&self) -> &[u8] {
&self.data[..self.len as usize]
}
}