use crate::error::AsynResult;
use crate::user::AsynUser;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum GpibCommand {
GET,
GTL,
SDC,
SPD,
SPE,
TCTSynch,
TCTAsync,
UNL,
UNT,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum GpibUniversalCommand {
DCL,
LLO,
SPD,
SPE,
IFC,
REN,
}
#[derive(Debug, Clone)]
pub struct SrqStatus {
pub srq_asserted: bool,
pub status_byte: Option<u8>,
}
pub trait AsynGpib: Send + Sync {
fn addressed_cmd(
&mut self,
user: &AsynUser,
cmd: GpibCommand,
addr: i32,
) -> AsynResult<()>;
fn universal_cmd(
&mut self,
user: &AsynUser,
cmd: GpibUniversalCommand,
) -> AsynResult<()>;
fn ifc(&mut self, user: &AsynUser) -> AsynResult<()>;
fn ren(&mut self, user: &AsynUser, enable: bool) -> AsynResult<()>;
fn srq_status(&self, user: &AsynUser) -> AsynResult<SrqStatus>;
fn srq_enable(&mut self, user: &AsynUser, enable: bool) -> AsynResult<()>;
fn serial_poll(&mut self, user: &AsynUser) -> AsynResult<u8>;
}