pub struct EpidSoftCallbackDeviceSupport;Expand description
Async Soft Channel device support for the epid record
(devEpidSoftCallback.c, DSET devEpidSoftCB).
Same PID algorithm as EpidSoftDeviceSupport, plus the asynchronous
readback trigger on the TRIG link. The trigger itself is NOT emitted
from here: stdSupport.dbd:14 selects this DSET with DTYP
"Async Soft Channel", which is_soft_dtyp classifies as a soft
channel, so the framework never attaches a device for it and this
read() never runs for a record loaded from a .db. Both TRIG link
types are therefore fired by EpidRecord::pre_input_link_actions,
which is reached on the record-internal soft path — one owner, one
push site. This impl stays as the record type’s declared DSET (the
same vestigial role EpidSoftDeviceSupport plays for
"Soft Channel") and runs the PID if something does attach it.
Implementations§
Trait Implementations§
Source§impl DeviceSupport for EpidSoftCallbackDeviceSupport
impl DeviceSupport for EpidSoftCallbackDeviceSupport
fn dtyp(&self) -> &str
Source§fn read(&mut self, record: &mut dyn Record) -> CaResult<DeviceReadOutcome>
fn read(&mut self, record: &mut dyn Record) -> CaResult<DeviceReadOutcome>
fn write(&mut self, _record: &mut dyn Record) -> CaResult<()>
fn init(&mut self, _record: &mut (dyn Record + 'static)) -> Result<(), CaError>
Source§fn last_alarm(&self) -> Option<(u16, u16)>
fn last_alarm(&self) -> Option<(u16, u16)>
Source§fn last_timestamp(&self) -> Option<SystemTime>
fn last_timestamp(&self) -> Option<SystemTime>
Source§fn last_utag(&self) -> Option<u64>
fn last_utag(&self) -> Option<u64>
epicsUTag. None means the driver provides no userTag
and common.utag is left untouched. Read moreSource§fn set_process_context(&mut self, _ctx: &ProcessContext)
fn set_process_context(&mut self, _ctx: &ProcessContext)
read()
to push a read-only snapshot of framework-owned CommonFields
state (crate::server::record::ProcessContext) that the device
support needs. Read moreSource§fn set_record_info(&mut self, _name: &str, _scan: ScanType)
fn set_record_info(&mut self, _name: &str, _scan: ScanType)
Source§fn apply_record_info(&mut self, _info: &HashMap<String, String>)
fn apply_record_info(&mut self, _info: &HashMap<String, String>)
info("key", "value") directives from the .db
file to the device support. Default is a no-op; drivers that
react to specific tags (asyn asyn:READBACK, EtherCAT terminal
hints, etc.) override this. Called once after set_record_info
during builder wiring; not called again at runtime.Source§fn io_intr_receiver(&mut self) -> Option<Receiver<()>>
fn io_intr_receiver(&mut self) -> Option<Receiver<()>>
SCAN="I/O Intr", and for any device that
reports io_intr_scan_independent.Source§fn property_post_receiver(
&mut self,
) -> Option<Receiver<Vec<(String, EpicsValue)>>>
fn property_post_receiver( &mut self, ) -> Option<Receiver<Vec<(String, EpicsValue)>>>
Source§fn io_intr_scan_independent(&self) -> bool
fn io_intr_scan_independent(&self) -> bool
SCAN menu. Read moreSource§fn arm_readback_callback(&mut self)
fn arm_readback_callback(&mut self)
asyn:READBACK) cycle. Read moreSource§fn reconcile_readback_callback(&mut self)
fn reconcile_readback_callback(&mut self)
Source§fn output_callback_readback(&self) -> bool
fn output_callback_readback(&self) -> bool
asyn:READBACK) processing cycle replaces
this device’s output stage with a value readback. Read moreSource§fn write_begin(
&mut self,
_record: &mut (dyn Record + 'static),
) -> Result<Option<Box<dyn WriteCompletion>>, CaError>
fn write_begin( &mut self, _record: &mut (dyn Record + 'static), ) -> Result<Option<Box<dyn WriteCompletion>>, CaError>
Some(handle) if the write was submitted to a worker queue —
the caller should wait on the handle outside any record lock.
Returns None to fall back to synchronous write().Source§fn handle_command(
&mut self,
_record: &mut (dyn Record + 'static),
_command: &str,
_args: &[EpicsValue],
) -> Result<Vec<&'static str>, CaError>
fn handle_command( &mut self, _record: &mut (dyn Record + 'static), _command: &str, _args: &[EpicsValue], ) -> Result<Vec<&'static str>, CaError>
ProcessAction::DeviceCommand. This allows records to request
driver operations (e.g., scaler reset/arm/write_preset) without
holding a direct driver reference. Read more