diff --git a/documentation/new-notes/PR-359.md b/documentation/new-notes/PR-359.md new file mode 100644 index 000000000..266823c07 --- /dev/null +++ b/documentation/new-notes/PR-359.md @@ -0,0 +1,11 @@ +### Fix undefined timestamp for NORD field + +When monitoring non-val fields such as `NORD` for several record types updates +are not sent out correctly resulting in incorrect timestamps. This fixes this +for the record types `aai`, `aao`, `subArray`. + +Note that support modules that already implement this in the device support +layer will need to be updated to avoid doubled monitor updates. If those modules +are to be built against older versions of EPICS base then they will need to use +the defined macros `AAO_POSTS_NORD`, `AAI_POSTS_NORD`, `SA_POSTS_NORD`, or +`WF_POSTS_NORD` as appropriate to detect this change. diff --git a/modules/database/src/std/rec/aaiRecord.dbd.pod b/modules/database/src/std/rec/aaiRecord.dbd.pod index c27a225d0..4dcec08e7 100644 --- a/modules/database/src/std/rec/aaiRecord.dbd.pod +++ b/modules/database/src/std/rec/aaiRecord.dbd.pod @@ -303,6 +303,7 @@ Scan forward link if necessary, set PACT FALSE, and return. % long (*read_aai)(struct aaiRecord *prec); /*returns: (-1,0)=>(failure,success)*/ %} aaidset; %#define HAS_aaidset + %#define AAI_POSTS_NORD %#define AAI_DEVINIT_PASS1 2 % field(VAL,DBF_NOACCESS) { diff --git a/modules/database/src/std/rec/aaoRecord.dbd.pod b/modules/database/src/std/rec/aaoRecord.dbd.pod index 4ad29a0bb..14481ba4c 100644 --- a/modules/database/src/std/rec/aaoRecord.dbd.pod +++ b/modules/database/src/std/rec/aaoRecord.dbd.pod @@ -326,6 +326,7 @@ Scan forward link if necessary, set PACT FALSE, and return. % long (*write_aao)(struct aaoRecord *prec); /*returns: (-1,0)=>(failure,success)*/ %} aaodset; %#define HAS_aaodset + %#define AAO_POSTS_NORD % field(VAL,DBF_NOACCESS) { prompt("Value") diff --git a/modules/database/src/std/rec/subArrayRecord.dbd.pod b/modules/database/src/std/rec/subArrayRecord.dbd.pod index e3054a938..3fa5919d5 100644 --- a/modules/database/src/std/rec/subArrayRecord.dbd.pod +++ b/modules/database/src/std/rec/subArrayRecord.dbd.pod @@ -319,6 +319,7 @@ INP is expected to point to an array field of a waveform record or similar. % long (*read_sa)(struct subArrayRecord *prec); /*returns: (-1,0)=>(failure,success)*/ %} sadset; %#define HAS_sadset + %#define SA_POSTS_NORD % field(VAL,DBF_NOACCESS) { prompt("Value") diff --git a/modules/database/src/std/rec/waveformRecord.dbd.pod b/modules/database/src/std/rec/waveformRecord.dbd.pod index 329ceee35..4309a1881 100644 --- a/modules/database/src/std/rec/waveformRecord.dbd.pod +++ b/modules/database/src/std/rec/waveformRecord.dbd.pod @@ -396,6 +396,7 @@ routine and NORD is also set at that time. % long (*read_wf)(struct waveformRecord *prec); /*returns: (-1,0)=>(failure,success)*/ %} wfdset; %#define HAS_wfdset + %#define WF_POSTS_NORD % field(VAL,DBF_NOACCESS) { prompt("Value")