Skip to main content

ThrottleRecord

Struct ThrottleRecord 

Source
pub struct ThrottleRecord {
Show 21 fields pub val: f64, pub oval: f64, pub sent: f64, pub osent: f64, pub wait: i16, pub hopr: f64, pub lopr: f64, pub drvlh: f64, pub drvll: f64, pub drvls: i16, pub drvlc: i16, pub ver: String, pub sts: i16, pub prec: i16, pub dprec: i16, pub dly: f64, pub out: String, pub ov: i16, pub sinp: String, pub siv: i16, pub sync: i16, /* private fields */
}
Expand description

Throttle record — rate-limits value changes to prevent device damage.

Ported from EPICS std module throttleRecord.c.

When VAL is written, the record checks drive limits, optionally clips the value, sets WAIT=True, then writes SENT to the OUT link only after the minimum delay (DLY) has elapsed since the last output. If a new value arrives during the delay, it queues the latest value and sends it when the delay expires.

Fields§

§val: f64

Set value (VAL)

§oval: f64

Previous set value (OVAL), read-only

§sent: f64

Last sent value (SENT), read-only

§osent: f64

Previous sent value (OSENT), read-only

§wait: i16

Busy flag (WAIT): 0=False, 1=True, read-only

§hopr: f64

High operating range (HOPR)

§lopr: f64

Low operating range (LOPR)

§drvlh: f64

High drive limit (DRVLH)

§drvll: f64

Low drive limit (DRVLL)

§drvls: i16

Limit status: 0=Normal, 1=Low, 2=High (DRVLS), read-only

§drvlc: i16

Limit clipping: 0=Off, 1=On (DRVLC)

§ver: String

Code version string (VER), read-only

§sts: i16

Record status: 0=Unknown, 1=Error, 2=Success (STS), read-only

§prec: i16

Display precision (PREC)

§dprec: i16

Delay display precision (DPREC)

§dly: f64

Delay between outputs in seconds (DLY)

§out: String

Output link (OUT)

§ov: i16

Output link valid: 0=ExtNC, 1=Ext, 2=Local, 3=Constant (OV), read-only

§sinp: String

Sync input link (SINP)

§siv: i16

Sync input link valid (SIV), read-only

§sync: i16

Sync trigger: 0=Idle, 1=Process (SYNC)

Trait Implementations§

Source§

impl Default for ThrottleRecord

Source§

fn default() -> Self

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

impl Record for ThrottleRecord

Source§

fn record_type(&self) -> &'static str

Return the record type name (e.g., “ai”, “ao”, “bi”).
Source§

fn pre_process_actions(&mut self) -> Vec<ProcessAction>

Return pre-process actions (ReadDbLink) that the framework should execute BEFORE calling process(). This is called once per cycle. Default returns empty. Override in records that need link reads to be available during process().
Source§

fn process(&mut self) -> CaResult<ProcessOutcome>

Process the record (scan/compute cycle). Read more
Source§

fn can_device_write(&self) -> bool

Whether this record type supports device write (output records only).
Source§

fn special(&mut self, field: &str, after: bool) -> CaResult<()>

Called before/after a field put for side-effect processing.
Source§

fn get_field(&self, name: &str) -> Option<EpicsValue>

Get a field value by name.
Source§

fn put_field(&mut self, name: &str, value: EpicsValue) -> CaResult<()>

Set a field value by name.
Source§

fn field_list(&self) -> &'static [FieldDesc]

Return the list of field descriptors.
Source§

fn init_record(&mut self, pass: u8) -> CaResult<()>

Initialize record (pass 0: field defaults; pass 1: dependent init).
Source§

fn took_metadata_change(&mut self) -> bool

Optional: report whether this record’s last process() call mutated a metadata-class field (EGU/PREC/HOPR/LOPR/HLM/LLM/ alarm limits / DRVH/DRVL / state strings). Read more
Source§

fn validate_put(&self, _field: &str, _value: &EpicsValue) -> Result<(), CaError>

Validate a put before it is applied. Return Err to reject.
Source§

fn on_put(&mut self, _field: &str)

Hook called after a successful put_field.
Source§

fn primary_field(&self) -> &'static str

Primary field name (default “VAL”). Override for waveform etc.
Source§

fn val(&self) -> Option<EpicsValue>

Get the primary value.
Source§

fn set_val(&mut self, value: EpicsValue) -> Result<(), CaError>

Set the primary value. Read more
Source§

fn is_put_complete(&self) -> bool

Whether async processing has completed and put_notify can respond. Records that return AsyncPendingNotify should return false while async work is in progress, and true when done. Default: true (synchronous records are always complete).
Whether this record should fire its forward link after processing.
Source§

fn should_output(&self) -> bool

Whether this record’s OUT link should be written after processing. Defaults to true. Override in calcout to implement OOPT conditional output.
Source§

fn uses_monitor_deadband(&self) -> bool

Whether this record uses MDEL/ADEL deadband for monitor posting. Binary records (bi, bo, busy, mbbi, mbbo) return false because C EPICS always posts monitors for these record types regardless of whether the value changed.
Source§

fn as_any_mut(&mut self) -> Option<&mut (dyn Any + 'static)>

Downcast to concrete type for device support init injection. Override in record types that need device support to inject state (e.g., MotorRecord).
Source§

fn clears_udf(&self) -> bool

Whether processing this record should clear UDF. Override to return false for record types that don’t produce a valid value every cycle.
Return multi-input link field pairs: (link_field, value_field). Override in calc, calcout, sel, sub to return INPA..INPL → A..L mappings.
Return multi-output link field pairs: (link_field, value_field). Override in transform to return OUTA..OUTP → A..P mappings.
Source§

fn put_field_internal( &mut self, name: &str, value: EpicsValue, ) -> Result<(), CaError>

Internal field write that bypasses read-only checks. Used by the framework to write values from ReadDbLink actions into fields that are normally read-only (e.g., epid.CVAL). Default implementation delegates to put_field().
Source§

fn set_device_did_compute(&mut self, _did_compute: bool)

Called by the framework before process() to indicate whether device support’s read() already performed the record’s compute step. Override in records that have a built-in compute (e.g., epid PID) to skip it when device support already ran it. Default: ignore.

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 = Infallible

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