diff --git a/Makefile b/Makefile index 70b94748bd2ddd6d0f81e69339f653f8c9c5d99d..3930f0e1d601a00ecc0bdec862359a06a7ff512c 100644 --- a/Makefile +++ b/Makefile @@ -26,3 +26,5 @@ TOP:=$(CURDIR) include $(TOP)/configure/CONFIG include $(TOP)/configure/RULES + +-include $(TOP)/test.Makefile diff --git a/addon.Makefile b/addon.Makefile index a5cd2a19d23f3e748b53c70d6afe15216079514d..0f1ccb04eb5cfe52c4f1280a2377314383b7e0f6 100644 --- a/addon.Makefile +++ b/addon.Makefile @@ -2,22 +2,42 @@ EXCLUDE_ARCHS += linux-corei7-poky EXCLUDE_ARCHS += linux-x86_64-debug -# REDUDANCY -# db: $(EVG_SUBS) $(EVR_SUBS) $(EVG_TMPS) macropgragma - -# macropgragma: -# python3 -m macropragma -c $(where_am_I)/../patch/conf.yaml -d $(where_am_I) -# .PHONY: db $(EVG_SUBS) $(EVR_SUBS) $(EVG_TMPS) - -patch_always: - #python3 -m pip install --user macropragma==$(PIP_MACROPRAGMA_DEP_VERSION) - for i in $(where_am_I)/../patch/*.patch; do \ - if ! patch -R -p0 -s -f --dry-run -d $(where_am_I)/../ <$$i &>/dev/null; then \ - patch -p0 -d $(where_am_I)/../ <$$i ; \ - fi \ - done - -define MACRO_SUBSTITUTION +# This is a bit of a hack, since this is set in ${CONFIG}/CONFIG_COMMON which isn't loaded by the time we build the `prebuild` target. +ifeq ($(strip $(PERL)),) +PERL = perl -CSD +endif + +.PHONY: version_header_file +version_header_file: + @printf "version_header_file applying: %s\n" $(E3_MODULE_VERSION) + $(PERL) -I$(EPICS_BASE)/lib/perl $(where_am_I)/$(MRFCOMMON)/genVersionHeader.pl -t "" -V $(E3_MODULE_VERSION) -N MRF_VERSION $(where_am_I)/$(MRFCOMMON)/mrf/version.h + +.PHONY: $(PATCH_FILES) +$(PATCH_FILES): + @if ! patch -R -p0 -s -f --dry-run -d $(E3MOD_ROOT)/ <$(@) &>/dev/null; then \ + printf "PATCH_FILES applying: %48s \n" "$(@)" ; \ + patch -p0 -d $(E3MOD_ROOT)/ <$(@) ; \ + else \ + printf "PATCH_FILES done: %48s \n" "$(@)" ; \ + fi; + + +.PHONY: $(EVG_SUBS) $(EVR_SUBS) $(ESS_SUBS) +$(EVG_SUBS) $(EVR_SUBS) $(ESS_SUBS): + @printf "SUBS inflating: %48s >>> %40s \n" "$@" "$(basename $(@)).db" + @rm -f $(basename $(@)).db.d $(basename $(@)).db + @$(MSI) -D $(USR_DBFLAGS) -o $(basename $(@)).db -S $@ > $(basename $(@)).db.d + @$(MSI) $(USR_DBFLAGS) -o $(basename $(@)).db -S $@ + +.PHONY: $(EVG_TMPS) +$(EVG_TMPS): + @printf "TMPS inflating: %48s >>> %40s \n" "$@" "$(basename $(@)).db" + @rm -f $(basename $(@)).db.d $(basename $(@)).db + @$(MSI) -D $(USR_DBFLAGS) -o $(basename $(@)).db $@ > $(basename $(@)).db.d + @$(MSI) $(USR_DBFLAGS) -o $(basename $(@)).db $@ + + +define UNIV_REGEX /\$$\((SYS|D)\)/{ \ s/\{\$$\(D\)\}?/$$(D)/g; \ s/\$$\(D\)-/$$(D)/g; \ @@ -27,19 +47,6 @@ define MACRO_SUBSTITUTION } endef -MACRO_SUBSTITUTION_FILES = $(EVGMRMAPPDB)/mtca-evm-300.db -MACRO_SUBSTITUTION_FILES += $(EVGMRMAPPDB)/cpci-evg-300.db -MACRO_SUBSTITUTION_FILES += $(EVRMRMAPPDB)/evr-mtca-300.db -MACRO_SUBSTITUTION_FILES += $(EVRMRMAPPDB)/evr-pcie-300dc.db - -MACRO_SUBSTITUTION_FILES += $(where_am_I)/../template/community/evrIoMtca.db - -define substitute_raw - for f in $1; do \ - sed -E '$(2)' $$f > $${f%.*}-univ.db; \ - done -endef - -.PHONY: db_fix_pv_naming_convention -db_fix_pv_naming_convention: $(MACRO_SUBSTITUTION_FILES) - $(call substitute_raw,$^,$(MACRO_SUBSTITUTION)) +$(UNIV_SUBS): %-univ.db : %.db + @printf "UNIV_SUBS applying: %48s >>> %s \n" "$<" "$@" + @sed -E '$(UNIV_REGEX)' $< > $@ diff --git a/configure/CONFIG_MODULE b/configure/CONFIG_MODULE index 05f72862a27cce315819f7bbc8f92db3c6186b77..4f38ee6befc8239679bf672909bb67c1c483f83f 100644 --- a/configure/CONFIG_MODULE +++ b/configure/CONFIG_MODULE @@ -2,7 +2,7 @@ EPICS_MODULE_NAME:=mrfioc2 # EPICS_MODULE_TAG:=0ce53468b1e35d5a4a801f72b99ab4189786b267 # -E3_MODULE_VERSION:=2.3.1+beta.221114 +E3_MODULE_VERSION:=2.3.1+alfa.230404 # DEVLIB2_DEP_VERSION:=2.11.0 # diff --git a/configure/RELEASE b/configure/RELEASE index ada5d9ac9faa07299e94ca6c17af5b3267d267c3..5592a33c81ddf722c62adff4560ac918c12888f4 100644 --- a/configure/RELEASE +++ b/configure/RELEASE @@ -1,5 +1,5 @@ -# -EPICS_BASE:=/epics/base-7.0.6.1 +# +EPICS_BASE:=/epics/base-7.0.7-utagrw E3_REQUIRE_NAME:=require E3_REQUIRE_VERSION:=4.0.0 @@ -8,3 +8,4 @@ E3_REQUIRE_VERSION:=4.0.0 -include $(TOP)/../../RELEASE.local -include $(TOP)/../RELEASE.local -include $(TOP)/configure/RELEASE.local + diff --git a/db/evtEnd.db b/db/evtEnd.db index a0198f8d3bc6a4609ca2b49ae4a26aa3ec62ec14..d8f6e3095bbdbcf36aebb159702c1af3b5c4bbbd 100644 --- a/db/evtEnd.db +++ b/db/evtEnd.db @@ -4,17 +4,20 @@ record(calcout, "$(P)$(Evt)IdEnd-I") { field(SCAN, "Passive") field(INPA, "$(P)EvtF14HzId-I CPP NMS") field(INPB, "$(P)$(Evt)Id-I") - field(CALC, "(A-1)==B||A==B?B:0") + field(CALC, "(A-1)==B||A==B?B:VAL") + #field(CALC, "(A-1)==B?B:0") field(EGU, "trig") field(TSEL, "$(P)EvtF14HzId-I.TIME") #field(OOPT, "When Non-zero") - field(DOPT, "Use OCAL") - field(OCAL, "(A-1)==B||A==B?1:0") + field(OOPT, "On Change") + #field(DOPT, "Use OCAL") + #field(OCAL, "(A-1)==B||A==B?1:0") field(PHAS, "2") - info(Q:group, { - "$(P)$(Evt)-Tag":{ - "":{+type:"meta",+channel:"VAL",+trigger:"*"} - #"value.IdEnd":{+type:"plain",+channel:"B",+trigger:"*"} - } - }) + # Trigger moved to the Tst managment. + # info(Q:group, { + # "$(P)$(Evt)-Tag":{ + # #"":{+type:"meta",+channel:"VAL",+trigger:"*"} + # "Evt.IdEnd":{+type:"plain", +channel:"VAL", +trigger:"*"} + # } + # }) } diff --git a/db/evtFreq.db b/db/evtFreq.db index 369d21da366925796cd9923299800722bdae6738..959eb5f22e5ffeb4dc3cffdd3066c2fee09f5016 100644 --- a/db/evtFreq.db +++ b/db/evtFreq.db @@ -18,7 +18,7 @@ record(calc,"$(P)$(Evt)Freq-I") { field(TSEL, "$(P)$(Evt)Cnt-I.TIME") info(Q:group, { "$(P)$(Evt)-Tag":{ - "value.Freq":{+type:"plain",+channel:"VAL",+trigger:""} + "Evt.Freq":{+type:"plain",+channel:"VAL",+trigger:""} } }) } diff --git a/db/evtId.db b/db/evtId.db index 0742c424b255276b0d37f896d9f7162057e9974b..02baefa79c77e3a77b6ae13ebba32ed308db9f46 100644 --- a/db/evtId.db +++ b/db/evtId.db @@ -1,45 +1,48 @@ -# TODO: UTAG is 64 bits but decreased to 32 in order to keep compatibility with userTag -record(longout, "$(P)$(Evt)DbufCycleId_") + +record(int64out, "$(P)$(Evt)Id_") { field(DESC, "DbufCycleId forwarder") + field(PHAS, "0") field(ASG, "private") field(SDIS, "$(P)$(Evt)Cnt-I CPP MS") field(DISV, "0") field(SCAN, "Passive") field(OMSL, "closed_loop") - field(DOL, "$(P)DbufCycleId-I") - # TODO: uncomment for new epics base # field(OUT, "$(P)$(Evt)Cnt-I.UTAG") - field(OUT, "$(P)EvtNullId-I") # Just to dump the output. + field(DOL, "$(P)$(EvtId=EvtF14HzId-I)") + field(OUT, "$(P)$(Evt)Cnt-I.UTAG") + #field(OUT, "$(P)EvtNullId-I") # Just to dump the output. } -# TODO: int64in changed to longin in order to hack the userTag bug. -record(longin, "$(P)$(Evt)Id-I") +record(int64in, "$(P)$(Evt)Id-I") { field(DESC, "Event $(CODE) + Id + timestamp") field(SCAN, "Passive") - field(SDIS, "$(P)$(Evt)DbufCycleId_ CPP MS") - field(DISV, "0") - #field(TSEL, "$(P)$(Evt)Cnt-I.TIME CA") field(TSEL, "$(P)$(Evt)Cnt-I.TIME") field(EGU, "id") - field(INP, "$(P)DbufCycleId-I") + field(INP, "$(P)$(Evt)Id_ CPP MS") ###TODO: The placeholder for the future implementation together with the delay pipeline alias("$(P)$(Evt)IdAck-I") info(Q:group, { "$(P)$(Evt)-Tag":{ - "timeStamp.userTag":{+type:"plain",+channel:"VAL",+trigger:""}, # Not necessary if UTAG configured. - "value.Id":{+type:"plain",+channel:"VAL",+trigger:""} + # Add the timestamp + "Evt":{+type:"meta", +channel:"TIME"}, + # "timeStamp.time":{+type:"plain",+channel:"TIME",+trigger:""}, + # "timeStamp.userTag":{+type:"plain",+channel:"VAL",+trigger:""}, + "Evt.Id":{+type:"plain", +channel:"VAL", +trigger:""} } }) + + field(FLNK, "$(P)$(Evt)IdPrev-I") } +# int64in and int64out does not work for SDIS field - breaks the link +# field(SDIS, "$(P)$(Evt)Id_ CPP MS") + record(int64in, "$(P)$(Evt)IdPrev-I") { field(DESC, "Event $(CODE) + Id + timestamp - previous") field(SCAN, "Passive") - field(SDIS, "$(P)$(Evt)DbufCycleId_ CPP MS") - field(DISV, "0") field(TSEL, "$(P)$(Evt)Cnt-I.TIME") #field(TSEL, "$(P)$(Evt)Cnt-I.TIME") #field(TSEL, {pva:{pv:"$(P)$(Evt)Cnt-I.TIME"}}) @@ -49,20 +52,20 @@ record(int64in, "$(P)$(Evt)IdPrev-I") info(Q:group, { "$(P)$(Evt)-Tag":{ - "value.IdPrev":{+type:"plain",+channel:"VAL",+trigger:""} + "Evt.IdPrev":{+type:"plain", +channel:"VAL", +trigger:""} } }) + + field(FLNK, "$(P)$(OBJ=)$(Evt)IdMinor-I") } -record(calcout, "$(P)$(OBJ=)$(Evt)IdMinor-I") { +record(calcout, "$(P)$(OBJ=)$(Evt)IdMinor-I") +{ field(DESC, "Event $(CODE) occurrence in cycle") field(SCAN, "Passive") field(INPA, "$(P)$(OBJ=)$(Evt)Cnt-I") field(INPB, "$(P)$(OBJ=)$(Evt)IdMinor-I.LA") - field(SDIS, "$(P)$(Evt)DbufCycleId_ CPP MS") - field(DISV, "0") - field(EGU, "cnt") #field(IVOV, "0") field(IVOA, "Don't drive outputs") @@ -73,7 +76,7 @@ record(calcout, "$(P)$(OBJ=)$(Evt)IdMinor-I") { field(TSEL, "$(P)$(Evt)Cnt-I.TIME") info(Q:group, { "$(P)$(Evt)-Tag":{ - "value.IdMinor":{+type:"plain",+channel:"VAL",+trigger:""} + "Evt.IdMinor":{+type:"plain", +channel:"VAL", +trigger:""} } }) } diff --git a/db/evtPrd.db b/db/evtPrd.db index 811b82fb3e04eac538d01480d433da15a02f7cb8..4b1071641998f33a3b203f713fce9ae004365804 100644 --- a/db/evtPrd.db +++ b/db/evtPrd.db @@ -14,7 +14,7 @@ record(calcout, "$(P)$(OBJ=)$(Evt)PrdCyc-I") { field(TSEL, "$(P)$(Evt)Cnt-I.TIME") info(Q:group, { "$(P)$(Evt)-Tag":{ - "value.PrdCyc":{+type:"plain",+channel:"VAL",+trigger:""} + "Evt.PrdCyc":{+type:"plain",+channel:"VAL",+trigger:""} } }) } @@ -36,7 +36,7 @@ record(calcout, "$(P)$(OBJ=)$(Evt)Prd-I") { field(TSEL, "$(P)$(Evt)Cnt-I.TIME") info(Q:group, { "$(P)$(Evt)-Tag":{ - "value.Prd":{+type:"plain",+channel:"VAL",+trigger:""} + "Evt.Prd":{+type:"plain",+channel:"VAL",+trigger:""} } }) } diff --git a/db/evtTst.db b/db/evtTst.db index 477cd741ee1b5f121b7041ccf0ecb9a102000fb4..1a078b96fa38930c66f7d52390de30e1f67b0f07 100644 --- a/db/evtTst.db +++ b/db/evtTst.db @@ -1,21 +1,56 @@ record(stringin, "$(P)$(Evt)Tst-I") { field(DESC, "Event $(CODE) timestamp raw") + field(PHAS, "2") field(DTYP, "Soft Timestamp") field(SCAN, "Passive") field(TSEL, "$(P)$(Evt)Cnt-I.TIME CPP MS") field(INP, "@%s.%f") + info(Q:group, { + "$(P)$(Evt)-Tag":{ + "Evt.Tst":{+type:"plain", +channel:"VAL"} + } + }) } record(stringin, "$(P)$(Evt)TstTime-I") { field(DESC, "Event $(CODE) timestamp time") + field(PHAS, "2") field(DTYP, "Soft Timestamp") field(SCAN, "Passive") field(TSEL, "$(P)$(Evt)Cnt-I.TIME CPP MS") field(INP, "@%Y-%m-%dT%H:%M:%S.%06f") info(Q:group, { "$(P)$(Evt)-Tag":{ - "value.TstTime":{+type:"plain", +channel:"VAL"} + "Evt.TstTime":{+type:"plain", +channel:"VAL"} + } + }) +} + +record(stringin, "$(P)$(Evt)TstIdEnd-I") { + field(DESC, "Event $(CODE) timestamp raw") + #field(PHAS, "2") + field(DTYP, "Soft Timestamp") + field(SCAN, "Passive") + field(TSEL, "$(P)$(Evt)IdEnd-I.TIME CPP MS") + field(INP, "@%s.%f") + info(Q:group, { + "$(P)$(Evt)-Tag":{ + "Evt.TstIdEnd":{+type:"plain", +channel:"VAL",+trigger:"*"} + } + }) +} + +record(stringin, "$(P)$(Evt)TstTimeIdEnd-I") { + field(DESC, "Event $(CODE) timestamp - event end") + #field(PHAS, "2") + field(DTYP, "Soft Timestamp") + field(SCAN, "Passive") + field(TSEL, "$(P)$(Evt)IdEnd-I.TIME CPP MS") + field(INP, "@%Y-%m-%dT%H:%M:%S.%06f") + info(Q:group, { + "$(P)$(Evt)-Tag":{ + "Evt.TstTimeIdEnd":{+type:"plain", +channel:"VAL"} } }) } diff --git a/iocBoot/evrEss.cmd b/iocBoot/evrEss.cmd index 196d955d0ec323fbf9a070a7d688b97850108777..b30c4ff5760dbbb6b0c44c8a47df020975c875ec 100644 --- a/iocBoot/evrEss.cmd +++ b/iocBoot/evrEss.cmd @@ -3,7 +3,7 @@ # Generic EVR template # ==================== -require "mrfioc2" +require "mrfioc2" "$(SwVer=)" require "essioc" # Config diff --git a/iocsh/base/evgAsyn.iocsh b/iocsh/base/evgAsyn.iocsh index 6ecfd840367c9e57edc84a64eacfac750bff5649..318d5b3f75563e645de53065e96bde6099c07826 100644 --- a/iocsh/base/evgAsyn.iocsh +++ b/iocsh/base/evgAsyn.iocsh @@ -1,6 +1,8 @@ # Trigger embedded EVR U with the post-mortem upstream input event afterInit "dbpf" "$(P)U-DlyGen-0-Evt-Trig0-SP" "$(EvtPMortemSys=41)" afterInit "dbpf" "$(P)U-DlyGen-0-Width-SP" "1" +# TODO: [temp] Assure width with the direct write +# afterInit "pciwrite" "32 0x3020C 0x00000058" afterInit "dbpf" "$(P)U-Out-FP0-Src-Pulse-SP" "Pulser 0" # Broadcast the post-mortemevent afterInit "dbpf" "$(P)TrigEvt-2-EvtCode-SP" "$(EvtPMortem=40)" @@ -9,6 +11,8 @@ afterInit "dbpf" "$(P)TrigEvt-2-TrigSrc-Cont-Sel" "Univ8" # Trigger embedded EVR U with the data-on-demand upstream input event afterInit "dbpf" "$(P)U-DlyGen-1-Evt-Trig0-SP" "$(EvtDoDSys=43)" afterInit "dbpf" "$(P)U-DlyGen-1-Width-SP" "1" +# TODO: [temp] Assure width with the direct write +# afterinit "pciwrite" "32 0x3021C 0x00000058" afterInit "dbpf" "$(P)U-Out-FP1-Src-Pulse-SP" "Pulser 1" # Broadcast the data-on-demand event afterInit "dbpf" "$(P)TrigEvt-3-EvtCode-SP" "$(EvtDoD=42)" diff --git a/iocsh/base/evgSeq.iocsh b/iocsh/base/evgSeq.iocsh index aedb16872150b2bea7189fe0f02572631e51b03a..b50c767d9a56f473dac517bca4833dc538ab26b9 100644 --- a/iocsh/base/evgSeq.iocsh +++ b/iocsh/base/evgSeq.iocsh @@ -27,6 +27,8 @@ afterInit "dbpf" "$(P)TrigEvt-0-TrigSrc-Sel" "Mxc0" # Start the Sequencer0 afterInit "system" "caput -a $(P)SoftSeq-0-Timestamp-SP 1 1" +# TODO: This does not work. +#afterInit "dbpf" "$(P)SoftSeq-0-Timestamp-SP" "1" afterInit "system" "caput -a $(P)SoftSeq-0-EvtCode-SP 1 127" # TODO: Generates warning: afterInit "dbpf" "$(P)SoftSeq-0-Timestamp-SP" "1" afterInit "epicsThreadSleep" "1" diff --git a/iocsh/devel/evrBPInSniff.r.iocsh b/iocsh/devel/evrBPInSniff.r.iocsh index 00c9bc486e55bac110fdf790ce62a5d724862de8..5f22c9a1a18aa3afd355b79df947ab2b34ad735b 100644 --- a/iocsh/devel/evrBPInSniff.r.iocsh +++ b/iocsh/devel/evrBPInSniff.r.iocsh @@ -1,48 +1,59 @@ -dbpf "$(P=$(PEVR)$(S=:))Out-Back0-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))Out-Back1-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))Out-Back2-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))Out-Back3-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))Out-Back4-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))Out-Back5-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))Out-Back6-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))Out-Back7-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back0-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back1-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back2-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back3-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back4-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back5-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back6-Src-Scale-SP" "Tri-state" +dbpf "$(P)Out-Back7-Src-Scale-SP" "Tri-state" -dbpf "$(P=$(PEVR)$(S=:))BPIn-0-Trig-Ext-Sel" "Edge" -dbpf "$(P=$(PEVR)$(S=:))BPIn-1-Trig-Ext-Sel" "Edge" -dbpf "$(P=$(PEVR)$(S=:))BPIn-2-Trig-Ext-Sel" "Edge" -dbpf "$(P=$(PEVR)$(S=:))BPIn-3-Trig-Ext-Sel" "Edge" -dbpf "$(P=$(PEVR)$(S=:))BPIn-4-Trig-Ext-Sel" "Edge" -dbpf "$(P=$(PEVR)$(S=:))BPIn-5-Trig-Ext-Sel" "Edge" -dbpf "$(P=$(PEVR)$(S=:))BPIn-6-Trig-Ext-Sel" "Edge" -dbpf "$(P=$(PEVR)$(S=:))BPIn-7-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-0-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-1-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-2-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-3-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-4-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-5-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-6-Trig-Ext-Sel" "Edge" +dbpf "$(P)BPIn-7-Trig-Ext-Sel" "Edge" + +# Disable backward events +# TODO: To lock access to those PVs +dbpf "$(P)BPIn-0-Trig-Back-Sel" "Off" +dbpf "$(P)BPIn-1-Trig-Back-Sel" "Off" +dbpf "$(P)BPIn-2-Trig-Back-Sel" "Off" +dbpf "$(P)BPIn-3-Trig-Back-Sel" "Off" +dbpf "$(P)BPIn-4-Trig-Back-Sel" "Off" +dbpf "$(P)BPIn-5-Trig-Back-Sel" "Off" +dbpf "$(P)BPIn-6-Trig-Back-Sel" "Off" +dbpf "$(P)BPIn-7-Trig-Back-Sel" "Off" # Local EVR events -dbpf "$(P=$(PEVR)$(S=:))BPIn-0-Code-Ext-SP" "130" -dbpf "$(P=$(PEVR)$(S=:))BPIn-1-Code-Ext-SP" "131" -dbpf "$(P=$(PEVR)$(S=:))BPIn-2-Code-Ext-SP" "132" -dbpf "$(P=$(PEVR)$(S=:))BPIn-3-Code-Ext-SP" "133" -dbpf "$(P=$(PEVR)$(S=:))BPIn-4-Code-Ext-SP" "134" -dbpf "$(P=$(PEVR)$(S=:))BPIn-5-Code-Ext-SP" "135" -dbpf "$(P=$(PEVR)$(S=:))BPIn-6-Code-Ext-SP" "136" -dbpf "$(P=$(PEVR)$(S=:))BPIn-7-Code-Ext-SP" "137" +dbpf "$(P)BPIn-0-Code-Ext-SP" "130" +dbpf "$(P)BPIn-1-Code-Ext-SP" "131" +dbpf "$(P)BPIn-2-Code-Ext-SP" "132" +dbpf "$(P)BPIn-3-Code-Ext-SP" "133" +dbpf "$(P)BPIn-4-Code-Ext-SP" "134" +dbpf "$(P)BPIn-5-Code-Ext-SP" "135" +dbpf "$(P)BPIn-6-Code-Ext-SP" "136" +dbpf "$(P)BPIn-7-Code-Ext-SP" "137" # Reset counters -dbpf "$(P=$(PEVR)$(S=:))EvtACnt-I" "0" -dbpf "$(P=$(PEVR)$(S=:))EvtBCnt-I" "0" -dbpf "$(P=$(PEVR)$(S=:))EvtCCnt-I" "0" -dbpf "$(P=$(PEVR)$(S=:))EvtDCnt-I" "0" -dbpf "$(P=$(PEVR)$(S=:))EvtECnt-I" "0" -dbpf "$(P=$(PEVR)$(S=:))EvtFCnt-I" "0" -dbpf "$(P=$(PEVR)$(S=:))EvtGCnt-I" "0" -dbpf "$(P=$(PEVR)$(S=:))EvtHCnt-I" "0" +dbpf "$(P)EvtACnt-I" "0" +dbpf "$(P)EvtBCnt-I" "0" +dbpf "$(P)EvtCCnt-I" "0" +dbpf "$(P)EvtDCnt-I" "0" +dbpf "$(P)EvtECnt-I" "0" +dbpf "$(P)EvtFCnt-I" "0" +dbpf "$(P)EvtGCnt-I" "0" +dbpf "$(P)EvtHCnt-I" "0" # Backplane sniffer -dbpf "$(P=$(PEVR)$(S=:))EvtA-SP.OUT" "@OBJ=$(DEV=EVR),Code=130" -dbpf "$(P=$(PEVR)$(S=:))EvtB-SP.OUT" "@OBJ=$(DEV=EVR),Code=131" -dbpf "$(P=$(PEVR)$(S=:))EvtC-SP.OUT" "@OBJ=$(DEV=EVR),Code=132" -dbpf "$(P=$(PEVR)$(S=:))EvtD-SP.OUT" "@OBJ=$(DEV=EVR),Code=133" -dbpf "$(P=$(PEVR)$(S=:))EvtE-SP.OUT" "@OBJ=$(DEV=EVR),Code=134" -dbpf "$(P=$(PEVR)$(S=:))EvtF-SP.OUT" "@OBJ=$(DEV=EVR),Code=135" -dbpf "$(P=$(PEVR)$(S=:))EvtG-SP.OUT" "@OBJ=$(DEV=EVR),Code=136" -dbpf "$(P=$(PEVR)$(S=:))EvtH-SP.OUT" "@OBJ=$(DEV=EVR),Code=137" +dbpf "$(P)EvtA-SP.OUT" "@OBJ=$(DEV=EVR),Code=130" +dbpf "$(P)EvtB-SP.OUT" "@OBJ=$(DEV=EVR),Code=131" +dbpf "$(P)EvtC-SP.OUT" "@OBJ=$(DEV=EVR),Code=132" +dbpf "$(P)EvtD-SP.OUT" "@OBJ=$(DEV=EVR),Code=133" +dbpf "$(P)EvtE-SP.OUT" "@OBJ=$(DEV=EVR),Code=134" +dbpf "$(P)EvtF-SP.OUT" "@OBJ=$(DEV=EVR),Code=135" +dbpf "$(P)EvtG-SP.OUT" "@OBJ=$(DEV=EVR),Code=136" +dbpf "$(P)EvtH-SP.OUT" "@OBJ=$(DEV=EVR),Code=137" diff --git a/iocsh/devel/seq0Ess.r.iocsh b/iocsh/devel/seq0Ess.r.iocsh index 3bc739eed45f93cb5d2522c500c016dec5041721..9c75eae31376f67bbfa2de4c75b0905569a3ce0c 100644 --- a/iocsh/devel/seq0Ess.r.iocsh +++ b/iocsh/devel/seq0Ess.r.iocsh @@ -5,32 +5,32 @@ afterInit "epicsThreadSleep" "5" epicsEnvSet "EvtSeqEss" "15 $(EvtF14Hz) $(EvtIonMagSt) $(EvtIonMagEnd) $(EvtLebtCpOff) $(EvtLebtCpOn) $(EvtMebtCpHead) $(EvtMebtCpTail) $(EvtBPulseSt) $(EvtBPulseEnd) $(EvtRfSt) $(EvtBiAcqSt) $(EvtBiAcqEnd) $(EvtDBufSent) $(EvtHBeat) $(EvtSeqEnd)" epicsEnvSet "TimestampSeqEss" "15 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 71428" -dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-Disable-Cmd" "1" +dbpf "$(P)SoftSeq-0-Disable-Cmd" "1" # Set up the evr prescalers that will trigger the sequencer at 14Hz and 1Hz ### -$(EVR_DIS=)dbpf "$(P=$(PEVR)$(S=:))PS-0-Div-SP" "$(Mxc14Hz=6289464)" -$(EVR_DIS=)dbpf "$(P=$(PEVR)$(S=:))PS-1-Div-SP" "$(Mxc1Hz=88052496)" +$(EVR_DIS=)dbpf "$(P)PS-0-Div-SP" "$(Mxc14Hz=6289464)" +$(EVR_DIS=)dbpf "$(P)PS-1-Div-SP" "$(Mxc1Hz=88052496)" # Set up the sequencer ## EVR: Set the trigger of the sequencer as Prescaler 0 for 14Hz and Prescaler 1 for 1Hz ## EVG: Set Mxc0 for 14Hz or Mxc7 for 1Hz -$(SEL14=)$(EVR_DIS=)dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-TrigSrc-2-Sel" "Prescaler 0" -$(SEL1="#")$(EVR_DIS=)dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-TrigSrc-2-Sel" "Prescaler 1" -$(SEL14=)dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-TrigSrc-Sel" "Mxc0" -$(SEL1="#")dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-TrigSrc-Sel" "Mxc7" +$(SEL14=)$(EVR_DIS=)dbpf "$(P)SoftSeq-0-TrigSrc-2-Sel" "Prescaler 0" +$(SEL1="#")$(EVR_DIS=)dbpf "$(P)SoftSeq-0-TrigSrc-2-Sel" "Prescaler 1" +$(SEL14=)dbpf "$(P)SoftSeq-0-TrigSrc-Sel" "Mxc0" +$(SEL1="#")dbpf "$(P)SoftSeq-0-TrigSrc-Sel" "Mxc7" # Set the engineering units (microseconds) -dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-TsResolution-Sel" "uSec" +dbpf "$(P)SoftSeq-0-TsResolution-Sel" "uSec" # Set the runmode to normal, so that the sequencer re-arms after it finishes running -dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-RunMode-Sel" "Normal" +dbpf "$(P)SoftSeq-0-RunMode-Sel" "Normal" # Event code 14 (14 Hz), 127 is the end of sequence -system "caput -a $(P=$(PEVR)$(S=:))SoftSeq-0-EvtCode-SP $(EvtSeqEss)" +system "caput -a $(P)SoftSeq-0-EvtCode-SP $(EvtSeqEss)" # Defining time at which the event codes are sent in us (timestamps) -system "caput -a $(P=$(PEVR)$(S=:))SoftSeq-0-Timestamp-SP $(TimestampSeqEss)" +system "caput -a $(P)SoftSeq-0-Timestamp-SP $(TimestampSeqEss)" # Attach the soft sequence to a specific hardware sequence -dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-Load-Cmd" "1" +dbpf "$(P)SoftSeq-0-Load-Cmd" "1" # Commit the sequence to HW -dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-Commit-Cmd" "1" +dbpf "$(P)SoftSeq-0-Commit-Cmd" "1" # Enable the sequencer -dbpf "$(P=$(PEVR)$(S=:))SoftSeq-0-Enable-Cmd" "1" +dbpf "$(P)SoftSeq-0-Enable-Cmd" "1" diff --git a/iocsh/envEss.iocsh b/iocsh/envEss.iocsh index e5efbd96d6eb0b9560a5318e46e370acc99ea944..4618b392e9427dfac5c6e19dc6206e65c548cf3a 100644 --- a/iocsh/envEss.iocsh +++ b/iocsh/envEss.iocsh @@ -71,8 +71,9 @@ epicsEnvSet EvtCode43 43 epicsEnvSet EvtDoDSys $(EvtCode43) # [Special purpose events] -epicsEnvSet EvtName80 EvtF14Hz -epicsEnvSet EvtCode80 14 # exists by default +# EvtF14Hz defined directly inside: evtPkg.iocsh +# epicsEnvSet EvtName80 EvtF14Hz +# epicsEnvSet EvtCode80 14 # exists by default epicsEnvSet EvtF14Hz $(EvtCode80) epicsEnvSet EvtName81 EvtDBufSent epicsEnvSet EvtCode81 17 # exists by default diff --git a/iocsh/pkg/evrEvt.iocsh b/iocsh/pkg/evrEvt.iocsh index 09596d8735a00d6fcdbd144baa646eaeb2e88c1a..f84e527b7aabde612060b475abc492eb10ca63f3 100644 --- a/iocsh/pkg/evrEvt.iocsh +++ b/iocsh/pkg/evrEvt.iocsh @@ -1,4 +1,4 @@ $(EvtEnable=)dbLoadRecords "$(mrfioc2_DB)/evt.db" "P=$(P),Evt=$(Evt),CODE=$(CODE=)" -dbLoadRecords "$(mrfioc2_DB)/evtPkg.db" "P=$(P),Evt=$(Evt),CODE=$(CODE=)" +dbLoadRecords "$(mrfioc2_DB)/evtPkg.db" "P=$(P),Evt=$(Evt),CODE=$(CODE=),EvtId=$(EvtId=EvtF14HzId-I)" dbLoadRecords "$(mrfioc2_DB)/evtTstPkg.db" "P=$(P),Evt=$(Evt),CODE=$(CODE=)" diff --git a/iocsh/pkg/evtPkg.iocsh b/iocsh/pkg/evtPkg.iocsh index a0ce0e6b44962f8ddaf6bee48d7714846bafb128..7113afd57e5362ef03a9fe0ff91f0caebe8a9d65 100644 --- a/iocsh/pkg/evtPkg.iocsh +++ b/iocsh/pkg/evtPkg.iocsh @@ -27,7 +27,8 @@ iocshLoad "$(Path=$(mrfioc2_DIR)/evrEvt.iocsh)" "P=$(P),Evt=$(EvtName43=EvtNull) #iocshLoad "$(Path=$(mrfioc2_DIR)/evrEvt.iocsh)" "P=$(P),Evt=$(EvtName47=EvtNull),CODE=$(EvtCode47=255)" # Special purpose events -iocshLoad "$(Path=$(mrfioc2_DIR)/evrEvt.iocsh)" "P=$(P),Evt=$(EvtName80=EvtNull),CODE=$(EvtCode80=255)" +# EvtF14Hz is a cycle start reference +iocshLoad "$(Path=$(mrfioc2_DIR)/evrEvt.iocsh)" "P=$(P),Evt=$(EvtName80=EvtF14Hz),CODE=$(EvtCode80=14),EvtId=DbufCycleId-I" iocshLoad "$(Path=$(mrfioc2_DIR)/evrEvt.iocsh)" "P=$(P),Evt=$(EvtName81=EvtNull),CODE=$(EvtCode81=255)" iocshLoad "$(Path=$(mrfioc2_DIR)/evrEvt.iocsh)" "P=$(P),Evt=$(EvtName82=EvtNull),CODE=$(EvtCode82=255)" iocshLoad "$(Path=$(mrfioc2_DIR)/evrEvt.iocsh)" "P=$(P),Evt=$(EvtName83=EvtNull),CODE=$(EvtCode83=255)" diff --git a/mrfioc2.Makefile b/mrfioc2.Makefile index 3e109b36639c35dcc68f3b32ae6e5d2dfc31a703..fd8a085e69a92f4b3712c91efd2b9dcbdaff9951 100644 --- a/mrfioc2.Makefile +++ b/mrfioc2.Makefile @@ -26,7 +26,7 @@ include ${E3_REQUIRE_TOOLS}/driver.makefile include $(E3_REQUIRE_CONFIG)/DECOUPLE_FLAGS ifneq ($(strip $(DEVLIB2_DEP_VERSION)),) -devlib2_VERSION=$(DEVLIB2_DEP_VERSION) + devlib2_VERSION:=$(DEVLIB2_DEP_VERSION) endif # Exclude architerctures that are not in use @@ -218,6 +218,7 @@ HEADERS += $(MRFCOMMON)/plx9030.h HEADERS += $(MRFCOMMON)/plx9056.h HEADERS += $(MRFCOMMON)/latticeEC30.h +HEADERS += $(MRFCOMMON)/mrf/version.h DBDS += $(MRFCOMMON)/mrfCommon.dbd @@ -249,26 +250,13 @@ SOURCES += $(MRFCOMMON)/pollirq.cpp SOURCES += $(MRFCOMMON)/flashiocsh.cpp +# E3MOD_ROOT:=$(where_am_I)/.. +E3MOD_ROOT:=../ - -HEADERS += $(MRFCOMMON)/mrf/version.h - -# This is a bit of a hack, since this is set in ${CONFIG}/CONFIG_COMMON which isn't loaded by the time we build the `prebuild` target. -ifeq ($(strip $(PERL)),) -PERL = perl -CSD -endif - -prebuild: version_header_file - -.PHONY: version_header_file -version_header_file: - $(PERL) -I$(EPICS_BASE)/lib/perl $(where_am_I)/$(MRFCOMMON)/genVersionHeader.pl -t "" -V $(E3_MODULE_VERSION) -N MRF_VERSION $(where_am_I)/$(MRFCOMMON)/mrf/version.h - - -SCRIPTS += $(wildcard ../iocsh/*.*sh) -SCRIPTS += $(wildcard ../iocsh/*/*.*sh) -SCRIPTS += $(wildcard ../iocBoot/*.cmd) -SCRIPTS += $(wildcard ../bin/*.bash) +SCRIPTS += $(wildcard $(E3MOD_ROOT)/iocsh/*.*sh) +SCRIPTS += $(wildcard $(E3MOD_ROOT)/iocsh/*/*.*sh) +SCRIPTS += $(wildcard $(E3MOD_ROOT)/iocBoot/*.cmd) +SCRIPTS += $(wildcard $(E3MOD_ROOT)/bin/*.bash) TEMPLATES += $(wildcard $(MRMSHAREDDB)/*.db) TEMPLATES += $(wildcard $(EVRAPPDB)/*.db) @@ -281,10 +269,10 @@ TEMPLATES += $(wildcard $(EVGMRMAPPDB)/*.template) TEMPLATES += $(wildcard $(EVRMRMAPPDB)/*.template) #TODO: Check TEMPLATES += $(wildcard ../template/evr*.substitutions) -TEMPLATES += $(wildcard ../template/*.template) -TEMPLATES += $(wildcard ../db/*.db) -TEMPLATES += $(wildcard ../template/*.db) -TEMPLATES += $(wildcard ../template/*/*.db) +TEMPLATES += $(wildcard $(E3MOD_ROOT)/template/*.template) +TEMPLATES += $(wildcard $(E3MOD_ROOT)/db/*.db) +TEMPLATES += $(wildcard $(E3MOD_ROOT)/template/*.db) +TEMPLATES += $(wildcard $(E3MOD_ROOT)/template/*/*.db) USR_DBFLAGS += -I . -I .. USR_DBFLAGS += -I $(EPICS_BASE)/db @@ -292,43 +280,37 @@ USR_DBFLAGS += -I $(MRMSHAREDDB) USR_DBFLAGS += -I $(EVGMRMAPPDB) USR_DBFLAGS += -I $(EVRMRMAPPDB) USR_DBFLAGS += -I $(EVRAPPDB) -USR_DBFLAGS += -I $(where_am_I)/../template -USR_DBFLAGS += -I $(where_am_I)/../db -USR_DBFLAGS += -I $(where_am_I)/../template/dbuf -USR_DBFLAGS += -I $(where_am_I)/../template/evt -USR_DBFLAGS += -I $(where_am_I)/../template/sts -EVG_SUBS = $(wildcard $(EVGMRMAPPDB)/*.substitutions) -EVG_TMPS = $(wildcard $(EVGMRMAPPDB)/*.template) -EVR_SUBS = $(wildcard $(EVRMRMAPPDB)/*.substitutions) +USR_DBFLAGS += -I $(E3MOD_ROOT)/template +USR_DBFLAGS += -I $(E3MOD_ROOT)/db +USR_DBFLAGS += -I $(E3MOD_ROOT)/template/dbuf +USR_DBFLAGS += -I $(E3MOD_ROOT)/template/evt +USR_DBFLAGS += -I $(E3MOD_ROOT)/template/sts + +EVG_SUBS := $(wildcard $(EVGMRMAPPDB)/*.substitutions) +EVG_TMPS := $(wildcard $(EVGMRMAPPDB)/*.template) +EVR_SUBS := $(wildcard $(EVRMRMAPPDB)/*.substitutions) + +ESS_SUBS := $(wildcard $(E3MOD_ROOT)/template/*.substitutions) +ESS_SUBS += $(wildcard $(E3MOD_ROOT)/template/*/*.substitutions) + +PATCH_FILES := $(wildcard $(E3MOD_ROOT)/patch/*.patch) -ESS_SUBS = $(wildcard ../template/*.substitutions) -ESS_SUBS += $(wildcard ../template/*/*.substitutions) +UNIV_SUBS := $(EVGMRMAPPDB)/mtca-evm-300-univ.db +UNIV_SUBS += $(EVGMRMAPPDB)/cpci-evg-300-univ.db +UNIV_SUBS += $(EVRMRMAPPDB)/evr-mtca-300-univ.db +UNIV_SUBS += $(EVRMRMAPPDB)/evr-pcie-300dc-univ.db +UNIV_SUBS += $(E3MOD_ROOT)/template/community/evrIoMtca-univ.db .PHONY: db db: .PHONY: prebuild -prebuild: patch_always $(EVG_SUBS) $(EVR_SUBS) $(EVG_TMPS) $(ESS_SUBS) db_fix_pv_naming_convention - -.PHONY: $(EVG_SUBS) $(EVR_SUBS) $(ESS_SUBS) -$(EVG_SUBS) $(EVR_SUBS) $(ESS_SUBS): - @printf "Inflating database ... %48s >>> %40s \n" "$@" "$(basename $(@)).db" - @rm -f $(basename $(@)).db.d $(basename $(@)).db - @$(MSI) -D $(USR_DBFLAGS) -o $(basename $(@)).db -S $@ > $(basename $(@)).db.d - @$(MSI) $(USR_DBFLAGS) -o $(basename $(@)).db -S $@ - -.PHONY: $(EVG_TMPS) -$(EVG_TMPS): - @printf "Inflating database ... %48s >>> %40s \n" "$@" "$(basename $(@)).db" - @rm -f $(basename $(@)).db.d $(basename $(@)).db - @$(MSI) -D $(USR_DBFLAGS) -o $(basename $(@)).db $@ > $(basename $(@)).db.d - @$(MSI) $(USR_DBFLAGS) -o $(basename $(@)).db $@ +prebuild: version_header_file $(PATCH_FILES) $(EVG_SUBS) $(EVR_SUBS) $(ESS_SUBS) $(EVG_TMPS) $(UNIV_SUBS) # .PHONY: vlibs vlibs: # -# User addon -include $(where_am_I)/../addon.Makefile +-include $(where_am_I)/../addon.Makefile diff --git a/template/dbuf/dbufEnum.template b/template/dbuf/dbufEnum.template index 7c3a99b4e5843a23fa0cc74dc92dcd6e5c58b1b9..c2bbe10254dcab242ec4e4287daf1084a3f89a7c 100644 --- a/template/dbuf/dbufEnum.template +++ b/template/dbuf/dbufEnum.template @@ -21,6 +21,12 @@ record(mbbi, "$(P)$(GR)BStateName-I") { field(FTSV, "INVALID") field(FFSV, "INVALID") field(UNSV, "INVALID") + + info(Q:group, { + "$(P)$(GR)-Tag":{ + "Dbuf.BStateName":{+type:"plain", +channel:"VAL"} + } + }) } record(mbbi, "$(P)$(GR)BPresentName-I") { @@ -45,6 +51,12 @@ record(mbbi, "$(P)$(GR)BPresentName-I") { field(FTSV, "INVALID") field(FFSV, "INVALID") field(UNSV, "INVALID") + + info(Q:group, { + "$(P)$(GR)-Tag":{ + "Dbuf.BPresentName":{+type:"plain", +channel:"VAL"} + } + }) } record(mbbi, "$(P)$(GR)BDestName-I") { @@ -74,6 +86,12 @@ record(mbbi, "$(P)$(GR)BDestName-I") { field(FTSV, "INVALID") field(FFSV, "INVALID") field(UNSV, "INVALID") + + info(Q:group, { + "$(P)$(GR)-Tag":{ + "Dbuf.BDestName":{+type:"plain", +channel:"VAL"} + } + }) } record(mbbi, "$(P)$(GR)BModName-I") { @@ -107,4 +125,10 @@ record(mbbi, "$(P)$(GR)BModName-I") { field(FTSV, "INVALID") field(FFSV, "INVALID") field(UNSV, "INVALID") + + info(Q:group, { + "$(P)$(GR)-Tag":{ + "Dbuf.BModName":{+type:"plain", +channel:"VAL"} + } + }) } diff --git a/template/dbuf/meta.template b/template/dbuf/meta.template index 73072ad8b0afc537733270217e3c8b661e094ee3..3b99b85e1f959ff32f355b613c702d9ab37bc605 100644 --- a/template/dbuf/meta.template +++ b/template/dbuf/meta.template @@ -3,9 +3,38 @@ record("*", "$(P)$(GR)$(PV)-I") field(PHAS, "2") info(Q:group, { "$(P)$(GR)-Tag":{ - #"":{+type:"meta",+channel:"VAL"}, - "timeStamp.userTag":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}, - "value.$(PV)":{+type:"plain",+channel:"VAL"} + "Dbuf":{+type:"meta",+channel:"TIME"}, + "Dbuf.timeStamp.userTag":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}, + "Dbuf.$(PV)":{+type:"plain",+channel:"VAL",+trigger:""} } }) } + +# TODO: To make the databuffer following the event structure but inside +# record(stringin, "$(P)DbufTst-I") +# { +# field(DESC, "Data buffer timestamp raw") +# field(DTYP, "Soft Timestamp") +# field(SCAN, "Passive") +# field(TSEL, "$(P)$(GR)$(PV)-I.TIME CPP MS") +# field(INP, "@%s.%f") +# info(Q:group, { +# "$(P)$(GR)-Tag":{ +# "Dbuf.Tst":{+type:"plain", +channel:"VAL"} +# } +# }) +# } + +# record(stringin, "$(P)$(Evt)DbufTstTime-I") +# { +# field(DESC, "Data buffer timestamp time") +# field(DTYP, "Soft Timestamp") +# field(SCAN, "Passive") +# field(TSEL, "$(P)$(GR)$(PV)-I.TIME CPP MS") +# field(INP, "@%Y-%m-%dT%H:%M:%S.%06f") +# info(Q:group, { +# "$(P)$(GR)-Tag":{ +# "Dbuf.TstTime":{+type:"plain", +channel:"VAL"} +# } +# }) +# } diff --git a/template/dbuf/subArrInt32.template b/template/dbuf/subArrInt32.template index 8b264fe21801d46784207d5fd792f47747573314..4a8bf3d3eaaff9f657e62a1467774f081e6b4990 100644 --- a/template/dbuf/subArrInt32.template +++ b/template/dbuf/subArrInt32.template @@ -6,5 +6,5 @@ record(longin, "$(P)$(GR)$(PV)-I") { field(INP, "$(P)$(GR)Idx$(INDEX)-subA_ CPP") field(EGU, "$(EGU=)") - $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"value.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) + $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"Dbuf.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) } diff --git a/template/dbuf/subArrInt64.template b/template/dbuf/subArrInt64.template index 99e8290933b388e564d382095af56705eca4b0e6..782ab855f3ce549f1633add0f869f772cd0d55c6 100644 --- a/template/dbuf/subArrInt64.template +++ b/template/dbuf/subArrInt64.template @@ -13,5 +13,5 @@ record(int64in, "$(P)$(GR)$(PV)-I") { field(INP, "$(P)$(GR)$(PV)-calc CPP MS") field(SCAN, "Passive") - $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"value.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) + $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"Dbuf.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) } diff --git a/template/dbuf/subArrUint32.template b/template/dbuf/subArrUint32.template index 63377494061ea57661d7b9c420844a622c8beed4..6542da2f5735447b704084e441e8847a5d569d82 100644 --- a/template/dbuf/subArrUint32.template +++ b/template/dbuf/subArrUint32.template @@ -8,5 +8,5 @@ record(waveform, "$(P)$(GR)$(PV)-I") { field(NELM, "1") field(FTVL, "ULONG") - $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"value.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) + $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"Dbuf.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) } diff --git a/template/dbuf/subArrUint8.template b/template/dbuf/subArrUint8.template index 6ae740b308ad03d304c92887fc75df45f3be3201..a096c7d30c16bdda2e7ab9900ee9873df67d7190 100644 --- a/template/dbuf/subArrUint8.template +++ b/template/dbuf/subArrUint8.template @@ -15,5 +15,5 @@ record(waveform, "$(P)$(GR)$(PV)-I") { field(NELM, "1") field(FTVL, "UCHAR") - $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"value.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) + $(INFO=)info(Q:group,{"$(P)$(GR)-Tag":{"Dbuf.$(PV)":{+type:"plain",+channel:"VAL",+trigger:"$(TR=)"}}}) } diff --git a/template/evt/evtPkg.substitutions b/template/evt/evtPkg.substitutions index b7be878e4f8f292c5915384c8617d1bea4a016bf..e9633263b69d80f0c291ddf88ca6e25b5e2868f0 100644 --- a/template/evt/evtPkg.substitutions +++ b/template/evt/evtPkg.substitutions @@ -1,4 +1,4 @@ -global {P=$(P),Evt=\$(Evt),CODE=\$(CODE=)} +global {P=$(P),Evt=\$(Evt),CODE=\$(CODE=),EvtId=\$(EvtId)} file "evtId.db" {pattern diff --git a/test.Makefile b/test.Makefile index 44d445f5b70e443e5a5724b5d7ffd83c7100a7e7..4e2b84cbb8397fedc7e004ecf818bf374ca8a743 100755 --- a/test.Makefile +++ b/test.Makefile @@ -1,51 +1,43 @@ -TOP:=$(CURDIR) -PACKAGE_MANAGER:=command -v yum dnf apt -include $(TOP)/configure/CONFIG -include $(TOP)/configure/RULES -where_am_I:=$(CURDIR)/$(EPICS_MODULE_NAME) +define target_meta + @echo "=============================================================================" + @echo $(lastword $(MAKEFILE_LIST)) "Building target: $@" + @echo "=============================================================================" +endef -epics_auto: - $(info $$TOP is [${TOP}]) - source ${EPICS_BASE}/require/${E3_REQUIRE_VERSION}/bin/setE3Env.bash - -build_full: epics_auto - make clean - make -f test.Makefile dbclean - make init +.PHONY: mrfioc2_build +mrfioc2_build: mrfioc2_clean make build + $(target_meta) -build_fast: epics_auto - make -f test.Makefile dbclean - make build +.PHONY: mrfioc2_build_test +mrfioc2_build_test: build + $(target_meta) + +.PHONY: mrfioc2_clean +mrfioc2_clean: clean mrfioc2_dbclean init + $(target_meta) -installation: - make uninstall - make install +.PHONY: mrfioc2_build_fast +mrfioc2_build_fast: mrfioc2_dbclean build + $(target_meta) -full: build_full installation +.PHONY: mrfioc2_install +mrfioc2_install: uninstall install + $(target_meta) -fast: build_fast installation +.PHONY: mrfioc2_full +mrfioc2_full: mrfioc2_build mrfioc2_install + $(target_meta) -dbclean: +.PHONY: mrfioc2_fast +mrfioc2_fast: mrfioc2_build_fast mrfioc2_install + $(target_meta) + +.PHONY: mrfioc2_dbclean +mrfioc2_dbclean: + $(target_meta) rm template/*.db* || true rm $(TOP)/mrfioc2/*_Common/* || true rm $(TOP)/template/*.db template/*.db.d || true rm $(TOP)/template/*/*.db template/*/*.db.d || true - -# make -f test.Makefile patch_always - -# main: -# make uninstall -# make init patch build -# make install - -pragma: - python3 -m macropragma -v - python3 -m macropragma -c $(where_am_I)/../patch/conf.yaml -d $(where_am_I)/ - -prepare: - sudo $(PACKAGE_MANAGER) install python3 python3-pip - python3 -m pip install --user macropragma==$(PIP_MACROPRAGMA_DEP_VERSION) - -include addon.Makefile