From b5df5c06360b92dfbfefedfdb4bd72e0d8e41862 Mon Sep 17 00:00:00 2001 From: marcofilho <marco.filho@ess.eu> Date: Mon, 13 Jan 2025 16:28:18 +0100 Subject: [PATCH] Fix missing callbacks. Initialize waveforms. asyn READBACK tag allows for waveform record to be updated whenever the callback is called in code. Without this, OPIs usually can't properly put or get to uninitialized waveform records. --- vmmTblApp/Db/channels.template | 2 ++ vmmTblApp/Db/vmm.template | 3 +++ vmmTblApp/src/vmm_tbl.cpp | 1 + 3 files changed, 6 insertions(+) diff --git a/vmmTblApp/Db/channels.template b/vmmTblApp/Db/channels.template index 4df77f9..2afd1b5 100644 --- a/vmmTblApp/Db/channels.template +++ b/vmmTblApp/Db/channels.template @@ -11,6 +11,8 @@ record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S") { field(FTVL, "CHAR") field(FLNK, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-R") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_$(VMM)_$(CH)") + + info(asyn:READBACK, "1") } record(aai, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-R") { diff --git a/vmmTblApp/Db/vmm.template b/vmmTblApp/Db/vmm.template index ac6e954..6cc81b7 100644 --- a/vmmTblApp/Db/vmm.template +++ b/vmmTblApp/Db/vmm.template @@ -7,6 +7,8 @@ record(aao, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S") { field(FTVL, "CHAR") field(FLNK, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-R") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_$(VMM)_$(CH)") + + info(asyn:READBACK, "1") } record(aai, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-R") { @@ -29,6 +31,7 @@ record(ao, "$(P)$(R)$(HYB)$(VMM)$(C)All$(CH)-S") { record(acalcout, "$(P)$(R)$(HYB)$(VMM)$(C)#All$(CH)-S") { field(NELM, "64") field(OOPT, "On Change") + field(CALC, "A") field(INPA, "$(P)$(R)$(HYB)$(VMM)$(C)All$(CH)-S CPP") field(INAA, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S") field(OUT, "$(P)$(R)$(HYB)$(VMM)$(C)$(CH)-S PP") diff --git a/vmmTblApp/src/vmm_tbl.cpp b/vmmTblApp/src/vmm_tbl.cpp index d5d159f..99c3ba3 100644 --- a/vmmTblApp/src/vmm_tbl.cpp +++ b/vmmTblApp/src/vmm_tbl.cpp @@ -600,6 +600,7 @@ endOfReadInt8Array: } *nIn = nElements; + status |= (int)doCallbacksInt8Array(value, nElements, function, 0); if (status) { asynPrint(pasynUserSelf, ASYN_TRACE_ERROR, "%s:%s: Failed to get paramter %s, index %d.\n", driverName, -- GitLab