Skip to main content

EpidSoftCallbackDeviceSupport

Struct EpidSoftCallbackDeviceSupport 

Source
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 Default for EpidSoftCallbackDeviceSupport

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl DeviceSupport for EpidSoftCallbackDeviceSupport

Source§

fn dtyp(&self) -> &str

Source§

fn read(&mut self, record: &mut dyn Record) -> CaResult<DeviceReadOutcome>

Read from hardware into the record. Read more
Source§

fn write(&mut self, _record: &mut dyn Record) -> CaResult<()>

Source§

fn init(&mut self, _record: &mut (dyn Record + 'static)) -> Result<(), CaError>

Source§

fn last_alarm(&self) -> Option<(u16, u16)>

Return the last alarm (status, severity) from the driver. None means the driver does not override alarms.
Source§

fn last_timestamp(&self) -> Option<SystemTime>

Return the last timestamp from the driver. None means the driver does not override timestamps.
Source§

fn last_utag(&self) -> Option<u64>

Return the userTag the driver attached to its reading, as the 64-bit epicsUTag. None means the driver provides no userTag and common.utag is left untouched. Read more
Source§

fn set_process_context(&mut self, _ctx: &ProcessContext)

Called by the framework immediately before read() to push a read-only snapshot of framework-owned CommonFields state (crate::server::record::ProcessContext) that the device support needs. Read more
Source§

fn set_record_info(&mut self, _name: &str, _scan: ScanType)

Called after init() with the record name and scan type.
Source§

fn apply_record_info(&mut self, _info: &HashMap<String, String>)

Forward parsed 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<()>>

Return a receiver for I/O Intr scan notifications. Called for records with 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)>>>

Return a receiver of out-of-band PROPERTY-class field posts. Read more
Source§

fn io_intr_scan_independent(&self) -> bool

Whether this device drives record processing from its own callback channel independently of the runtime SCAN menu. Read more
Source§

fn arm_readback_callback(&mut self)

Arm an output driver-callback (asyn:READBACK) cycle. Read more
Source§

fn reconcile_readback_callback(&mut self)

Reconcile an armed output driver-callback cycle after processing. Read more
Source§

fn output_callback_readback(&self) -> bool

Whether a driver-callback (asyn:READBACK) processing cycle replaces this device’s output stage with a value readback. Read more
Source§

fn write_begin( &mut self, _record: &mut (dyn Record + 'static), ) -> Result<Option<Box<dyn WriteCompletion>>, CaError>

Begin an asynchronous write (submit only, no blocking). Returns 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>

Handle a named command from the record’s process() via ProcessAction::DeviceCommand. This allows records to request driver operations (e.g., scaler reset/arm/write_preset) without holding a direct driver reference. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more