use futures::channel::oneshot;
use super::IfaceKind;
pub(super) enum ControlSignal {
ReceiveData(Vec<u8>),
CancelJobs(oneshot::Sender<()>),
ClearEiRegister,
ClearSiRegister,
Shutdown,
}
pub(super) enum EventSignal {
_EventData {
event_id: u16,
data: Vec<u8>,
request_id: u16,
},
UpdateTimestamp(u64),
_Enable,
Disable(oneshot::Sender<()>),
Shutdown,
}
pub(super) enum StreamSignal {
Enable,
Disable(oneshot::Sender<()>),
Shutdown,
}
pub(super) enum InterfaceSignal {
ToControl(ControlSignal),
ToEvent(EventSignal),
ToStream(StreamSignal),
Halt(IfaceKind),
}
impl From<ControlSignal> for InterfaceSignal {
fn from(val: ControlSignal) -> Self {
Self::ToControl(val)
}
}
impl From<EventSignal> for InterfaceSignal {
fn from(val: EventSignal) -> Self {
Self::ToEvent(val)
}
}
impl From<StreamSignal> for InterfaceSignal {
fn from(val: StreamSignal) -> Self {
Self::ToStream(val)
}
}