pub struct PluginPortDriver { /* private fields */ }Expand description
PortDriver implementation for a plugin’s control plane.
Trait Implementations§
Source§impl PortDriver for PluginPortDriver
impl PortDriver for PluginPortDriver
fn base(&self) -> &PortDriverBase
fn base_mut(&mut self) -> &mut PortDriverBase
fn io_write_int32(&mut self, user: &mut AsynUser, value: i32) -> AsynResult<()>
fn io_write_float64( &mut self, user: &mut AsynUser, value: f64, ) -> AsynResult<()>
fn io_write_octet( &mut self, user: &mut AsynUser, data: &[u8], ) -> AsynResult<usize>
fn read_int8_array( &mut self, _user: &AsynUser, buf: &mut [i8], ) -> AsynResult<usize>
fn read_int16_array( &mut self, _user: &AsynUser, buf: &mut [i16], ) -> AsynResult<usize>
fn read_int32_array( &mut self, _user: &AsynUser, buf: &mut [i32], ) -> AsynResult<usize>
fn read_int64_array( &mut self, _user: &AsynUser, buf: &mut [i64], ) -> AsynResult<usize>
fn read_float32_array( &mut self, _user: &AsynUser, buf: &mut [f32], ) -> AsynResult<usize>
fn read_float64_array( &mut self, _user: &AsynUser, buf: &mut [f64], ) -> AsynResult<usize>
fn connect(&mut self, _user: &AsynUser) -> Result<(), AsynError>
fn disconnect(&mut self, _user: &AsynUser) -> Result<(), AsynError>
fn enable(&mut self, _user: &AsynUser) -> Result<(), AsynError>
fn disable(&mut self, _user: &AsynUser) -> Result<(), AsynError>
fn connect_addr(&mut self, user: &AsynUser) -> Result<(), AsynError>
fn disconnect_addr(&mut self, user: &AsynUser) -> Result<(), AsynError>
fn enable_addr(&mut self, user: &AsynUser) -> Result<(), AsynError>
fn disable_addr(&mut self, user: &AsynUser) -> Result<(), AsynError>
fn get_option(&self, key: &str) -> Result<String, AsynError>
Source§fn set_option(
&mut self,
_user: &mut AsynUser,
key: &str,
value: &str,
) -> Result<(), AsynError>
fn set_option( &mut self, _user: &mut AsynUser, key: &str, value: &str, ) -> Result<(), AsynError>
C
asynOption::setOption(void *drvPvt, asynUser *pasynUser, key, val). Read moreSource§fn report(&self, out: &mut dyn Write, level: i32)
fn report(&self, out: &mut dyn Write, level: i32)
The driver’s own report — C
asynCommon::report, which the manager calls
last (reportPrintPort, asynManager.c:1113-1122) after printing the port’s
manager-level state itself. Read moreSource§fn has_octet_interface(&self) -> bool
fn has_octet_interface(&self) -> bool
Whether this driver registered
asynOctet — C’s
pasynStdInterfaces->octet.pinterface != NULL, which is set from the
constructor’s interfaceMask (asynPortDriver.cpp:1990). The Rust analogue
of that mask is Self::capabilities.fn read_int32(&mut self, user: &AsynUser) -> Result<i32, AsynError>
fn write_int32( &mut self, user: &mut AsynUser, value: i32, ) -> Result<(), AsynError>
fn read_int64(&mut self, user: &AsynUser) -> Result<i64, AsynError>
fn write_int64( &mut self, user: &mut AsynUser, value: i64, ) -> Result<(), AsynError>
Source§fn get_bounds_int32(&self, _user: &AsynUser) -> Result<(i32, i32), AsynError>
fn get_bounds_int32(&self, _user: &AsynUser) -> Result<(i32, i32), AsynError>
C
asynInt32Base.c:99 default: report low = high = 0 so a
driver that does not implement getBounds makes convertAi/convertAo
skip the LINEAR ESLO/EOFF computation (devAsynInt32.c:444).Source§fn get_bounds_int64(&self, _user: &AsynUser) -> Result<(i64, i64), AsynError>
fn get_bounds_int64(&self, _user: &AsynUser) -> Result<(i64, i64), AsynError>
C
asynInt64Base.c:99 default: report low = high = 0 (see
get_bounds_int32).fn read_float64(&mut self, user: &AsynUser) -> Result<f64, AsynError>
fn write_float64( &mut self, user: &mut AsynUser, value: f64, ) -> Result<(), AsynError>
fn read_octet( &mut self, user: &AsynUser, buf: &mut [u8], ) -> Result<usize, AsynError>
fn write_octet( &mut self, user: &mut AsynUser, data: &[u8], ) -> Result<usize, AsynError>
fn read_uint32_digital( &mut self, user: &AsynUser, mask: u32, ) -> Result<u32, AsynError>
fn write_uint32_digital( &mut self, user: &mut AsynUser, value: u32, mask: u32, ) -> Result<(), AsynError>
Source§fn set_interrupt_uint32_digital(
&mut self,
user: &AsynUser,
mask: u32,
reason: InterruptReason,
) -> Result<(), AsynError>
fn set_interrupt_uint32_digital( &mut self, user: &AsynUser, mask: u32, reason: InterruptReason, ) -> Result<(), AsynError>
Configure rising / falling interrupt masks for a
UInt32Digital parameter. C parity:
asynPortDriver::setInterruptUInt32Digital
(asynPortDriver.cpp:2346-2369) → routes to
paramList::setUInt32Interrupt. The default delegates to the
param store; drivers that need to push the configuration to
hardware (e.g. real GPIB cards toggling SRQ enable) override
it.Source§fn clear_interrupt_uint32_digital(
&mut self,
user: &AsynUser,
mask: u32,
) -> Result<(), AsynError>
fn clear_interrupt_uint32_digital( &mut self, user: &AsynUser, mask: u32, ) -> Result<(), AsynError>
Clear bits from rising AND falling masks. C parity:
asynPortDriver::clearInterruptUInt32Digital
(asynPortDriver.cpp:2392-2415). Mirrors C — the call does
not take an interruptReason; both masks are cleared.Source§fn get_interrupt_uint32_digital(
&self,
user: &AsynUser,
reason: InterruptReason,
) -> Result<u32, AsynError>
fn get_interrupt_uint32_digital( &self, user: &AsynUser, reason: InterruptReason, ) -> Result<u32, AsynError>
Read the configured rising / falling / combined mask. C
parity:
asynPortDriver::getInterruptUInt32Digital
(asynPortDriver.cpp:2438-2461).fn read_enum( &mut self, user: &AsynUser, ) -> Result<(usize, Arc<[EnumEntry]>), AsynError>
fn write_enum( &mut self, user: &mut AsynUser, index: usize, ) -> Result<(), AsynError>
fn write_enum_choices( &mut self, user: &mut AsynUser, choices: Arc<[EnumEntry]>, ) -> Result<(), AsynError>
fn read_generic_pointer( &mut self, user: &AsynUser, ) -> Result<Arc<dyn Any + Sync + Send>, AsynError>
fn write_generic_pointer( &mut self, user: &mut AsynUser, value: Arc<dyn Any + Sync + Send>, ) -> Result<(), AsynError>
fn write_float64_array( &mut self, user: &AsynUser, data: &[f64], ) -> Result<(), AsynError>
fn write_int32_array( &mut self, user: &AsynUser, data: &[i32], ) -> Result<(), AsynError>
fn write_int8_array( &mut self, user: &AsynUser, data: &[i8], ) -> Result<(), AsynError>
fn write_int16_array( &mut self, user: &AsynUser, data: &[i16], ) -> Result<(), AsynError>
fn write_int64_array( &mut self, user: &AsynUser, data: &[i64], ) -> Result<(), AsynError>
fn write_float32_array( &mut self, user: &AsynUser, data: &[f32], ) -> Result<(), AsynError>
fn io_read_octet( &mut self, user: &AsynUser, buf: &mut [u8], ) -> Result<usize, AsynError>
Source§fn io_read_octet_eom(
&mut self,
user: &AsynUser,
buf: &mut [u8],
) -> Result<(usize, EomReason), AsynError>
fn io_read_octet_eom( &mut self, user: &AsynUser, buf: &mut [u8], ) -> Result<(usize, EomReason), AsynError>
Octet read that also reports the end-of-message reason — C
parity for
asynOctet::read(... int *eomReason)
(asynOctet.h:38-40). The default implementation delegates to
Self::io_read_octet and reconstructs a synthetic
EomReason: CNT when the buffer filled, empty otherwise.
Drivers that have native EOM information
(asynOctetSyncIO::readRaw, GPIB END, EOS match) must
override this method so consumers — asynRecord::EOMR,
asynOctetSyncIO::readRaw mirrors — receive the real flags.fn io_read_int32(&mut self, user: &AsynUser) -> Result<i32, AsynError>
fn io_read_int64(&mut self, user: &AsynUser) -> Result<i64, AsynError>
fn io_write_int64( &mut self, user: &mut AsynUser, value: i64, ) -> Result<(), AsynError>
fn io_read_float64(&mut self, user: &AsynUser) -> Result<f64, AsynError>
fn io_read_uint32_digital( &mut self, user: &AsynUser, mask: u32, ) -> Result<u32, AsynError>
fn io_write_uint32_digital( &mut self, user: &mut AsynUser, value: u32, mask: u32, ) -> Result<(), AsynError>
fn io_flush(&mut self, _user: &mut AsynUser) -> Result<(), AsynError>
fn set_input_eos( &mut self, user: &AsynUser, eos: &[u8], ) -> Result<(), AsynError>
fn get_input_eos(&self, user: &AsynUser) -> Vec<u8> ⓘ
fn set_output_eos( &mut self, user: &AsynUser, eos: &[u8], ) -> Result<(), AsynError>
fn get_output_eos(&self, user: &AsynUser) -> Vec<u8> ⓘ
Source§fn gpib_universal_cmd(
&mut self,
_user: &mut AsynUser,
_cmd: u8,
) -> Result<(), AsynError>
fn gpib_universal_cmd( &mut self, _user: &mut AsynUser, _cmd: u8, ) -> Result<(), AsynError>
C
asynGpib::universalCmd — send one universal command byte with ATN
asserted (asynGpib.c:480-484, vxiUniversalCmd drvVxi11.c:1406-1424).Source§fn gpib_addressed_cmd(
&mut self,
_user: &mut AsynUser,
_data: &[u8],
) -> Result<(), AsynError>
fn gpib_addressed_cmd( &mut self, _user: &mut AsynUser, _data: &[u8], ) -> Result<(), AsynError>
C
asynGpib::addressedCmd — send an addressed-command frame with ATN
asserted (asynGpib.c:472-478, vxiAddressedCmd drvVxi11.c:1360-1404).
The frame is built by crate::interfaces::gpib::addressed_request.Source§fn gpib_ifc(&mut self, _user: &mut AsynUser) -> Result<(), AsynError>
fn gpib_ifc(&mut self, _user: &mut AsynUser) -> Result<(), AsynError>
C
asynGpib::ifc — assert Interface Clear (asynGpib.c:486-490).Source§fn gpib_ren(
&mut self,
_user: &mut AsynUser,
_enable: bool,
) -> Result<(), AsynError>
fn gpib_ren( &mut self, _user: &mut AsynUser, _enable: bool, ) -> Result<(), AsynError>
C
asynGpib::ren — set the Remote Enable line (asynGpib.c:492-496).Source§fn shutdown(&mut self) -> Result<(), AsynError>
fn shutdown(&mut self) -> Result<(), AsynError>
Called when the port is being shut down. Drivers override this
to release hardware resources. Matches C asynPortDriver::shutdownPortDriver().
Source§fn drv_user_create(
&mut self,
req: &DrvUserRequest,
) -> Result<DrvUserInfo, AsynError>
fn drv_user_create( &mut self, req: &DrvUserRequest, ) -> Result<DrvUserInfo, AsynError>
Resolve a record’s bind request (
DrvUserRequest: drvInfo string, asyn
addr, and the record’s asyn interface) to a DrvUserInfo — the
asyn-rs analogue of C drvUserCreate. Read moreSource§fn capabilities(&self) -> Vec<Capability>
fn capabilities(&self) -> Vec<Capability>
Declare the capabilities this driver supports.
Default implementation includes all scalar read/write operations.
Source§fn supports(&self, cap: Capability) -> bool
fn supports(&self, cap: Capability) -> bool
Check if this driver supports a specific capability.
fn init(&mut self) -> Result<(), AsynError>
Auto Trait Implementations§
impl !RefUnwindSafe for PluginPortDriver
impl !UnwindSafe for PluginPortDriver
impl Freeze for PluginPortDriver
impl Send for PluginPortDriver
impl Sync for PluginPortDriver
impl Unpin for PluginPortDriver
impl UnsafeUnpin for PluginPortDriver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more