Skip to main content

TimestampRecord

Struct TimestampRecord 

Source
pub struct TimestampRecord {
    pub val: String,
    pub oval: String,
    pub rval: i32,
    pub tst: i16,
    /* private fields */
}
Expand description

Timestamp record — generates formatted timestamp strings.

Ported from EPICS std module timestampRecord.c.

Fields§

§val: String

Current formatted timestamp string (VAL).

§oval: String

Previous value for change detection (OVAL).

§rval: i32

Seconds past EPICS epoch (RVAL). DBF_ULONG in C; the Rust value model has no unsigned-32 scalar, so this follows the project convention of mapping DBF_ULONG to i32/EpicsValue::Long.

§tst: i16

Timestamp format selector (TST), a DBF_MENU. Values 0..=10 select an explicit format; any other value is rendered with format 0 (C switch default: branch).

Trait Implementations§

Source§

impl Default for TimestampRecord

Source§

fn default() -> Self

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

impl Record for TimestampRecord

Source§

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

C timestampRecord.c:90 reads ptimestamp->tse. The framework owns dbCommon.tse; this hook captures it so process() can take the device-time branch.

Source§

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

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

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

Process the record (scan/compute cycle). Read more
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 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.
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 accepts_raw_soft_input(&self) -> bool

Whether this record implements the DTYP="Raw Soft Channel" read path via Record::apply_raw_input. Records that return true opt into framework routing of the INP link value through apply_raw_input (RVAL + MASK) instead of the default soft-channel VAL direct write. Read more
Source§

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

Apply a value read from a DTYP="Raw Soft Channel" INP link. Read more
Source§

fn apply_invalid_output_value( &mut self, ivov: EpicsValue, ) -> Result<(), CaError>

Apply IVOA=2 (“set outputs to IVOV”) semantics: copy the IVOV value into whatever output staging field the OUT writeback consumes for this record type. Mirrors the per-record C recXxx.c behaviour: Read more
Source§

fn can_device_write(&self) -> bool

Whether this record type supports device write (output records only). aao is included here even though it’s served by the same concrete struct as waveform/aai/subArray — the WaveformRecord’s can_device_write override picks the right answer per [ArrayKind], but this default matters for code that only has the record-type string.
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 / longout to implement OOPT conditional output (epics-base 7.0.8).
Source§

fn on_output_complete(&mut self)

Notify the record that the OUT-link / device write completed successfully on this cycle. The framework calls this right after the actual write so transition-detection state (e.g. longout.pval) can update for the next cycle’s Self::should_output check. Default: no-op.
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 monitor_deadband_value(&self) -> Option<EpicsValue>

The value the MDEL/ADEL deadband is evaluated against. Read more
Source§

fn init_record(&mut self, _pass: u8) -> Result<(), CaError>

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

fn post_init_finalize_undef(&mut self, _udf: &mut bool) -> Result<(), CaError>

Post-init finalisation hook with mutable access to the framework’s UDF flag. Called once after both init_record passes complete. Default implementation is a no-op. Read more
Called by the framework immediately after applying this cycle’s Record::multi_input_links fetches, before process(). Read more
Source§

fn special(&mut self, _field: &str, _after: bool) -> Result<(), CaError>

Called before/after a field put for side-effect processing.
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 value_is_undefined(&self) -> bool

Whether the record’s current VAL is undefined (UDF must stay set). Read more
Source§

fn check_alarms(&mut self, _common: &mut CommonFields)

Per-record alarm hook — evaluate record-type-specific alarms (STATE / COS / analog limit / SOFT) and accumulate them into nsta/nsev via recGblSetSevr. Read more
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 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().
Return actions the framework must execute BEFORE the input-link (multi_input_links, INP -> value-field) fetch for this cycle. Read more
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.
Source§

fn soft_channel_skips_convert(&self) -> bool

Whether this record has a raw-to-engineering (RVAL → VAL) convert() step that must be skipped on a Soft Channel input. 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 = 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