Skip to main content

Module dbd_generated

Module dbd_generated 

Source
Expand description

Record field tables generated from the vendored EPICS .dbd record declarations — the machine-readable spec every FieldDesc used to be hand-copied from.

@generated by tools/dbd-codegen from crates/std-rs/dbd/*.dbd. DO NOT EDIT. Re-run cargo run -p dbd-codegen -- --write after changing a vendored .dbd. Drift is caught by dbd_codegen::tests::generated_files_are_not_stale, which cargo nextest run executes — locally and in CI — so a stale table is a failing test, not a comment asking you to remember.

What is not here, and why:

  • dbCommon fields. The port models them once in CommonFields, so splicing them into every record table would double-declare them. Base’s table emits them separately as DB_COMMON_FIELDS so the two models can be reconciled (and so a dbCommon addition is a diff, not a silent gap).

  • DBF_NOACCESS rows whose extra(...) names a pointer or an array (RSET, DPVT, MLOK, BPTR, PPN, …). C keeps sizeof the struct member in pdbFldDes->size, and neither a pointer (whose C value is an address no two IOCs agree on) nor an array (whose width is its bound, not its element) has one this port can state, so the descriptor is dropped rather than invented — but the NAME is kept (record_noaccess_fields): C’s dbNameToAddr resolves them, so a SEARCH for REC.BPTR is answered and the refusal lands at channel creation, and the search gate needs the names to do the same.

    A row whose extra(...) names a plain scalar — dbCommon’s BKPT and TIME — is CARRIED, descriptor and width both, because dbpr prints its bytes and dba reports its Field Size and both read the declaration. Carried is not servable: FieldDesc::unreadable is what refuses the read, so the SEARCH is answered off the descriptor instead of off the name list.

Statics§

EPID_DECL
recordtype(epid) — C’s papFldDes order, all 99 declarations including the internals EPID_FIELDS drops. The index into this is C’s indRecordType.
EPID_FIELDS
recordtype(epid) — 51 CA-visible own fields from dbd/epidRecord.dbd (0 DBF_NOACCESS internals dropped).
EPID_NOACCESS
recordtype(epid) — the DBF_NOACCESS internal names dropped from EPID_FIELDS: resolvable (a SEARCH is answered), never servable.
MENUS
Every menu() this target declares: EPICS name, choice() identifiers, and choice values — the three columns dbWriteMenuFP prints (dbStaticLib.c:919-924), which is what dbDumpMenu reports.
MENU_EPID_FEEDBACK_MODE
menu(epidFeedbackMode)
MENU_EPID_FEEDBACK_STATE
menu(epidFeedbackState)
MENU_THROTTLE_DRVLC
menu(throttleDRVLC)
MENU_THROTTLE_DRVLS
menu(throttleDRVLS)
MENU_THROTTLE_OV
menu(throttleOV)
MENU_THROTTLE_STS
menu(throttleSTS)
MENU_THROTTLE_SYNC
menu(throttleSYNC)
MENU_THROTTLE_WAIT
menu(throttleWAIT)
MENU_TIMESTAMP_TST
menu(timestampTST)
RECORD_TYPES
Every record type a vendored .dbd declares, in .dbd name order.
THROTTLE_DECL
recordtype(throttle) — C’s papFldDes order, all 70 declarations including the internals THROTTLE_FIELDS drops. The index into this is C’s indRecordType.
THROTTLE_FIELDS
recordtype(throttle) — 21 CA-visible own fields from dbd/throttleRecord.dbd (1 DBF_NOACCESS internals dropped).
THROTTLE_NOACCESS
recordtype(throttle) — the DBF_NOACCESS internal names dropped from THROTTLE_FIELDS: resolvable (a SEARCH is answered), never servable.
TIMESTAMP_DECL
recordtype(timestamp) — C’s papFldDes order, all 52 declarations including the internals TIMESTAMP_FIELDS drops. The index into this is C’s indRecordType.
TIMESTAMP_FIELDS
recordtype(timestamp) — 4 CA-visible own fields from dbd/timestampRecord.dbd (0 DBF_NOACCESS internals dropped).
TIMESTAMP_NOACCESS
recordtype(timestamp) — the DBF_NOACCESS internal names dropped from TIMESTAMP_FIELDS: resolvable (a SEARCH is answered), never servable.
VARIABLES
Every variable() this target’s .dbds declare, as EPICS name and declared type — the two columns dbWriteVariableFP prints (dbStaticLib.c:1136-1149), which is what dbDumpVariable reports.

Functions§

menu_choices
Every menu() declared by a vendored .dbd, keyed by its EPICS name.
record_declaration_order
Every field a record type declares, in C’s papFldDes order — the order dbDumpRecordType indexes and link_ind/sortFldInd/indvalFlddes point into. Unlike record_fields this keeps the DBF_NOACCESS internals and splices dbCommon where the .dbd puts its include, so the index of a name here is C’s own indRecordType for it.
record_fields
The record-own field table for a record type name, or None for a type no vendored .dbd declares.
record_no_prompt
C’s pdbRecordType->no_prompt: how many of record_declaration_order’s declarations carry a promptgroup(...) (dbLexRoutines.c:752). Counted here because the port drops promptgroup at emit, so it cannot be recovered from the field tables.
record_noaccess_fields
The record-own DBF_NOACCESS internal names for a record type — fields C’s dbNameToAddr resolves (a SEARCH is answered) but whose channel is refused at creation (mapDBFToDBR -> DBR_NOACCESS). Empty for a type declaring none, None for a type no vendored .dbd declares.