diff --git a/vmmTblApp/Db/vmm.template b/vmmTblApp/Db/vmm.template index 8c64b2d163055ba69025697b5df40dfb0336d3f8..de3a4529cc2256975be81fd719eaf20cd79772b6 100644 --- a/vmmTblApp/Db/vmm.template +++ b/vmmTblApp/Db/vmm.template @@ -52,4 +52,12 @@ record(ai, "$(P)$(R)$(HYB)$(VMM)$(C)AnalogMon-R"){ field(PINI, "YES") field(SCAN, "I/O Intr") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_$(VMM)_ANALOGMON") +} + +record(ai, "$(P)$(R)$(HYB)$(VMM)$(C)DACVal-R"){ + field(DESC, "Read DAC value") + field(DTYP, "asynInt32") + field(PINI, "YES") + field(SCAN, "I/O Intr") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_$(HYB)_$(VMM)_DACVAL") } \ No newline at end of file diff --git a/vmmTblApp/Db/vmm_tbl.template b/vmmTblApp/Db/vmm_tbl.template index 036a5252b9b18dce1a88823ae2e91a9c14156dc3..2bd1b9f9d370c9bc58548d5413100f58ff972969 100644 --- a/vmmTblApp/Db/vmm_tbl.template +++ b/vmmTblApp/Db/vmm_tbl.template @@ -6,20 +6,6 @@ record(bo, "$(P)$(R)ReadADC-VMMs-S") { field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))READ_ADC_VMMS") } -record(ai, "$(P)$(R)MonValue-VMM0-RB") { - field(DESC, "Monitor Value Read") - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADC_VALUE_VMM0") -} - -record(ai, "$(P)$(R)MonValue-VMM1-RB") { - field(DESC, "Monitor Value Read") - field(DTYP, "asynFloat64") - field(SCAN, "I/O Intr") - field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADC_VALUE_VMM1") -} - record(bo, "$(P)$(R)Acquire-S") { field(DESC, "Start/stop FEN acquisition") field(VAL, "0") diff --git a/vmmTblApp/src/vmm_tbl.cpp b/vmmTblApp/src/vmm_tbl.cpp index 4b432399bb7db9b2bcaa0646b6db46ce06d35645..1805c9189cbe6b6bb9e4fe695e2696cd2433e831 100644 --- a/vmmTblApp/src/vmm_tbl.cpp +++ b/vmmTblApp/src/vmm_tbl.cpp @@ -79,6 +79,13 @@ asynStatus VMMTbl::readInt32(asynUser *pasynUser, epicsInt32 *value) { goto endOfReadInt32; } + param_index = VecUtils::getIndex(vmmDACVAL_, function, hyb_index, vmm_index); + if (param_index == 0) { + this->pVmmAPI->readADC(hyb_index, vmm_index, tmp_val); + *value = tmp_val; + goto endOfReadInt32; + } + endOfReadInt32: if (param_index < 0) { asynPrint(pasynUserSelf, ASYN_TRACE_ERROR, @@ -188,7 +195,7 @@ asynStatus VMMTbl::createEpicsParams() { createParamAndStoreInVector("HYB_" + std::to_string(hyb) + key, typ, vec); } - std::vector<int> SC, SL, ST, STH, SM, SD, SMX, DACIDX; + std::vector<int> SC, SL, ST, STH, SM, SD, SMX, DACIDX, DACVAL; for (int vmm=0; vmm < VMMS_PER_HYBRID; vmm++) { @@ -225,6 +232,10 @@ asynStatus VMMTbl::createEpicsParams() { param_name << "HYB_" << hyb <<"_" << vmm << "_ANALOGMON"; createParamAndStoreInVector(param_name.str(), asynParamInt32, &DACIDX); + param_name.str(""); + param_name << "HYB_" << hyb <<"_" << vmm << "_DACVAL"; + createParamAndStoreInVector(param_name.str(), asynParamInt32, &DACVAL); + } this->vmmSC_.push_back(SC); @@ -235,6 +246,7 @@ asynStatus VMMTbl::createEpicsParams() { this->vmmSD_.push_back(SD); this->vmmSMX_.push_back(SMX); this->vmmDACIDX_.push_back(DACIDX); + this->vmmDACVAL_.push_back(DACVAL); } diff --git a/vmmTblApp/src/vmm_tbl.h b/vmmTblApp/src/vmm_tbl.h index dbefed4f9961d4b9e1de34f51affcb4e966d598e..ece1351e3dddd10f51ffbfbad96c41307067d88a 100644 --- a/vmmTblApp/src/vmm_tbl.h +++ b/vmmTblApp/src/vmm_tbl.h @@ -50,6 +50,7 @@ protected: std::vector<std::vector<int>> vmmSD_; std::vector<std::vector<int>> vmmSMX_; std::vector<std::vector<int>> vmmDACIDX_; + std::vector<std::vector<int>> vmmDACVAL_; private: static constexpr const char *driverName = "VMMTbl";