Skip to content
Snippets Groups Projects
Commit 4bb393a0 authored by Marco Filho's avatar Marco Filho
Browse files

Merge branch 'ICSHWI-20310-minor-changes' into 'main'

Add NTTable for seeing hybrids status. Minor changes.

See merge request !12
parents 1bfb516d 2de09a09
No related branches found
No related tags found
1 merge request!12Add NTTable for seeing hybrids status. Minor changes.
......@@ -33,6 +33,7 @@ dbLoadRecords("$(vmmTbl_DB)/channels-global.db", "P=$(P), R=$(VMM-DEV)$(Glob), P
############## Particular rings
epicsEnvSet("RING", "00")
epicsEnvSet("ORDER", "2")
epicsEnvSet("RING-1-DIGIT", "0")
epicsEnvSet("PORT", "VMM0")
epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
......@@ -42,6 +43,7 @@ epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
< ./vmm.cmd
epicsEnvSet("RING", "01")
epicsEnvSet("ORDER", "3")
epicsEnvSet("RING-1-DIGIT", "1")
epicsEnvSet("PORT", "VMM1")
epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
......@@ -51,6 +53,7 @@ epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
< ./vmm.cmd
epicsEnvSet("RING", "02")
epicsEnvSet("ORDER", "4")
epicsEnvSet("RING-1-DIGIT", "2")
epicsEnvSet("PORT", "VMM2")
epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
......@@ -60,6 +63,7 @@ epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
< ./vmm.cmd
epicsEnvSet("RING", "03")
epicsEnvSet("ORDER", "5")
epicsEnvSet("RING-1-DIGIT", "3")
epicsEnvSet("PORT", "VMM3")
epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
......@@ -69,6 +73,7 @@ epicsEnvSet("R-VMM3A", "$(VMM3A-DEV)$(RING)")
< ./vmm.cmd
epicsEnvSet("RING", "04")
epicsEnvSet("ORDER", "6")
epicsEnvSet("RING-1-DIGIT", "4")
epicsEnvSet("PORT", "VMM4")
epicsEnvSet("R-VMM", "$(VMM-DEV)$(RING):")
......
......@@ -5,7 +5,7 @@ dbLoadRecords("$(rmm_DB)/topology.template", "P=$(P), R=$(RMM-DEV), PORT=RMM, RI
VMMTblConfig("RMM", "$(PORT)", "$(RING-1-DIGIT)", 5)
# R = NDet-VMM-<RingNumber#2>:
dbLoadRecords("$(vmmTbl_DB)/vmm_tbl.db", "P=$(P), R=$(R-VMM), Glob=$(VMM-DEV)$(Glob), PORT=$(PORT), RING=$(RING), NODE=0, ADDR=0, TIMEOUT=1")
dbLoadRecords("$(vmmTbl_DB)/vmm_tbl.db", "P=$(P), R=$(R-VMM), Glob=$(VMM-DEV)$(Glob), PORT=$(PORT), RING-1-DIGIT=$(RING-1-DIGIT), ORDER=$(ORDER), NODE=0, ADDR=0, TIMEOUT=1")
# 'R' = NDet-VMM-<RingNumber#2><HybNumber#1>:
dbLoadRecords("$(vmmTbl_DB)/hybrid.db", "P=$(P), R=$(R-HYB), Glob=$(VMM-DEV)$(Glob), VMMPREFIX=$(P)$(R-VMM), PORT=$(PORT), ADDR=0, TIMEOUT=1")
......
record(bo, "$(P)$(R)Enable-S") {
field(DESC, "Enable All hybrids")
field(PINI, "NO")
field(VAL, "1")
field(ZNAM, "Disable")
field(ONAM, "Enable")
}
......
record(dfanout, "$(P)$(R)$(HYB):ReadChipInfo") {
field(DESC, "Read particular chip info")
field(VAL, "0")
field(OUTA, "$(P)$(R)$(HYB):ID-R.PROC 1")
field(OUTB, "$(P)$(R)$(HYB):FwVersion-R.PROC 1")
field(OUTC, "$(P)$(R)$(HYB):GeoPos-R.PROC 1")
}
record(stringin, "$(P)$(R)$(HYB):FwVersion-R") {
field(DESC, "Hybrid $(HYB) Firmware version")
field(DTYP, "asynOctetRead")
......
......@@ -3,4 +3,18 @@ record(bo, "$(P)$(R)Acquire-S") {
field(VAL, "0")
field(ZNAM, "Done")
field(ONAM, "Acquire")
}
record(aai, "$(P)$(R)HybridStatTitles") {
field(FTVL, "STRING")
field(NELM, "12")
field(PINI,"YES")
field(INP , {const:["FEN0","FEN1","FEN2","FEN3","FEN4","FEN5","FEN6","FEN7","FEN8","FEN9","FEN0","FEN1"]})
info(Q:group, {
"$(P)$(R)AllHybStat-R":{
+id:"epics:nt/NTTable:1.0",
"labels":{+type:"plain", +channel:"VAL", +putorder:1}
}
})
}
\ No newline at end of file
......@@ -58,4 +58,19 @@ record(ai, "$(P)$(R)EnabledHybrids-R"){
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))NUM_HYBRIDS")
field(SCAN, "I/O Intr")
}
record(aai, "$(P)$(R)HybStatuses-R") {
field(DESC, "Status of all hybrids")
field(NELM, "6")
field(DTYP, "asynInt8ArrayIn")
field(FTVL, "CHAR")
field(SCAN, "1 second")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))HYB_LINK_STATS_ARR")
info(Q:group, {
"$(P)$(Glob)AllHybStat-R":{
"value.Col$(RING-1-DIGIT)":{+type:"plain", +channel:"VAL", +putorder:"$(ORDER)"}
}
})
}
\ No newline at end of file
......@@ -77,6 +77,7 @@ asynStatus VMMTbl::readInt32(asynUser *pasynUser, epicsInt32 *value) {
if (param_index >= 0) {
result = this->pVmmAPI->checkLinkStatus(param_index, tmp_val);
*value = tmp_val;
this->hybLinkStatArr_[param_index].store(*value);
goto endOfReadInt32;
}
......@@ -316,6 +317,7 @@ asynStatus VMMTbl::createEpicsParams() {
createParam("VMM_GLOBAL_SD", asynParamInt8Array, &global_SD);
createParam("VMM_GLOBAL_SD_VMM0", asynParamInt8Array, &global_SD0);
createParam("VMM_GLOBAL_SD_VMM1", asynParamInt8Array, &global_SD1);
createParam("HYB_LINK_STATS_ARR", asynParamInt8Array, &hybLinkStatArr);
std::tuple<std::string, asynParamType, std::vector<int> *> hyb_params_to_create[8] = {
{"_FW_VERSION", asynParamOctet, &vmmHybFwVersion_},
......@@ -575,6 +577,14 @@ asynStatus VMMTbl::readInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t n
goto endOfReadInt8Array;
}
if (function == hybLinkStatArr) {
found_param = 0;
for (size_t i = 0; i < nElements; i++) {
value[i] = this->hybLinkStatArr_[i].load();
}
goto endOfReadInt8Array;
}
found_param = VecUtils::getIndex(vmmSC_R, function, hyb_index, vmm_index);
if (found_param == 0) {
for (size_t i = 0; i < nElements; i++) {
......
#pragma once
#include <atomic>
#include "Utils.h"
#include "VMMAPI.h"
#include "rmm.h"
......@@ -41,6 +43,8 @@ class VMMTbl : public asynPortDriver {
int global_SD;
int global_SD0;
int global_SD1;
int hybLinkStatArr;
std::atomic<int> hybLinkStatArr_[HYBRIDS_PER_FEN] = {};
std::vector<int> vmmHybFwVersion_;
std::vector<int> vmmHybId_;
std::vector<int> vmmHybGeoPos_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment