From 27da750b96862dbe80d3011c0fe07ad5f5bf8d7c Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Mon, 9 Mar 2020 18:47:06 +0000 Subject: [PATCH 1/2] Add simple stream device echo test --- TEST/TEST-IOC-01App/Db/TEST-IOC-01.db | 26 +++++++++++++++++++++++++ TEST/TEST-IOC-01App/Makefile | 1 + TEST/TEST-IOC-01App/protocol/Makefile | 6 ++++++ TEST/TEST-IOC-01App/protocol/test.proto | 9 +++++++++ TEST/TEST-IOC-01App/src/build.mak | 10 +++++++--- TEST/iocBoot/iocTEST-IOC-01/st.cmd | 8 +++++--- 6 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 TEST/TEST-IOC-01App/protocol/Makefile create mode 100644 TEST/TEST-IOC-01App/protocol/test.proto diff --git a/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db b/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db index 9af1864bb..c3adf0241 100644 --- a/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db +++ b/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db @@ -1,3 +1,29 @@ +record(lso,"$(P)LSOVAL:SP") +{ + field(SIZV, "1024") +} + +record(lsi,"$(P)LSIVAL:SP") +{ + field(SIZV, "1024") +} + +record(waveform,"$(P)WFVAL:SP") +{ + field(NELM , "1024") + field(FTVL, "CHAR") + field(DTYP, "stream") + field(INP, "@test.proto writeString $(PORT)") + field(FLNK, "$(P)WFVAL") +} + +record(waveform,"$(P)WFVAL") +{ + field(NELM , "1024") + field(FTVL, "CHAR") + field(DTYP, "stream") + field(INP, "@test.proto readString $(PORT)") +} record(ai,"$(P)VAL") { diff --git a/TEST/TEST-IOC-01App/Makefile b/TEST/TEST-IOC-01App/Makefile index 10e0126aa..b260ceef1 100644 --- a/TEST/TEST-IOC-01App/Makefile +++ b/TEST/TEST-IOC-01App/Makefile @@ -4,5 +4,6 @@ DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*)) DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*)) DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*)) DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard protocol)) include $(TOP)/configure/RULES_DIRS diff --git a/TEST/TEST-IOC-01App/protocol/Makefile b/TEST/TEST-IOC-01App/protocol/Makefile new file mode 100644 index 000000000..ac6a859e1 --- /dev/null +++ b/TEST/TEST-IOC-01App/protocol/Makefile @@ -0,0 +1,6 @@ +TOP = ../.. +include $(TOP)/configure/CONFIG +DATA += test.proto + +include $(TOP)/configure/RULES + diff --git a/TEST/TEST-IOC-01App/protocol/test.proto b/TEST/TEST-IOC-01App/protocol/test.proto new file mode 100644 index 000000000..108186acc --- /dev/null +++ b/TEST/TEST-IOC-01App/protocol/test.proto @@ -0,0 +1,9 @@ +Terminator = LF; + +writeString { + out "%s"; +} + +readString { + in "%s"; +} diff --git a/TEST/TEST-IOC-01App/src/build.mak b/TEST/TEST-IOC-01App/src/build.mak index 65e014aca..fafb01502 100644 --- a/TEST/TEST-IOC-01App/src/build.mak +++ b/TEST/TEST-IOC-01App/src/build.mak @@ -25,18 +25,22 @@ $(APPNAME)_DBD += devIocStats.dbd $(APPNAME)_DBD += caPutLog.dbd $(APPNAME)_DBD += utilities.dbd ## add other dbd here ## +$(APPNAME)_DBD += calcSupport.dbd $(APPNAME)_DBD += randomSupport.dbd -$(APPNAME)_DBD += PVAServerRegister.dbd +$(APPNAME)_DBD += asyn.dbd +$(APPNAME)_DBD += drvAsynEcho.dbd +$(APPNAME)_DBD += stream.dbd # Add all the support libraries needed by this IOC ## ISIS standard libraries ## -$(APPNAME)_LIBS += seq pv +$(APPNAME)_LIBS += stream asyn asynEcho $(APPNAME)_LIBS += devIocStats $(APPNAME)_LIBS += pvdump $(MYSQLLIB) easySQLite sqlite $(APPNAME)_LIBS += caPutLog $(APPNAME)_LIBS += icpconfig pugixml -$(APPNAME)_LIBS += autosave +$(APPNAME)_LIBS += autosave calc sscan $(APPNAME)_LIBS += utilities pcre +$(APPNAME)_LIBS += seq pv ## Add other libraries here ## $(APPNAME)_LIBS += random ifdef EPICS_BASE_PVA_CORE_LIBS diff --git a/TEST/iocBoot/iocTEST-IOC-01/st.cmd b/TEST/iocBoot/iocTEST-IOC-01/st.cmd index 26de9194e..c5e0bc6db 100644 --- a/TEST/iocBoot/iocTEST-IOC-01/st.cmd +++ b/TEST/iocBoot/iocTEST-IOC-01/st.cmd @@ -11,6 +11,10 @@ cd ${TOP} dbLoadDatabase "dbd/TEST-IOC-01.dbd" TEST_IOC_01_registerRecordDeviceDriver pdbbase +epicsEnvSet ("STREAM_PROTOCOL_PATH", "$(TOP)/data") + +echoDriverInit("L0", 0.1, 0, 0) + ##ISIS## Run IOC initialisation < $(IOCSTARTUP)/init.cmd @@ -20,7 +24,7 @@ TEST_IOC_01_registerRecordDeviceDriver pdbbase < $(IOCSTARTUP)/dbload.cmd ## Load our record instances -dbLoadRecords("db/TEST-IOC-01.db","P=$(MYPVPREFIX)$(IOCNAME):, RANDDEV=Random Async, RANDSEED=324235") +dbLoadRecords("db/TEST-IOC-01.db","P=$(MYPVPREFIX)$(IOCNAME):,RANDDEV=Random Async,RANDSEED=324235,PORT=L0") ##ISIS## Stuff that needs to be done after all records are loaded but before iocInit is called < $(IOCSTARTUP)/preiocinit.cmd @@ -33,5 +37,3 @@ iocInit ##ISIS## Stuff that needs to be done after iocInit is called e.g. sequence programs < $(IOCSTARTUP)/postiocinit.cmd - -startPVAServer From 5e7ddaf5d1bf4d4ea443252a352fff28017b5c28 Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Mon, 9 Mar 2020 18:56:30 +0000 Subject: [PATCH 2/2] Add lso/lsi --- TEST/TEST-IOC-01App/Db/TEST-IOC-01.db | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db b/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db index c3adf0241..52e8a6d0b 100644 --- a/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db +++ b/TEST/TEST-IOC-01App/Db/TEST-IOC-01.db @@ -1,10 +1,15 @@ record(lso,"$(P)LSOVAL:SP") { + field(DTYP, "stream") + field(OUT, "@test.proto writeString $(PORT)") field(SIZV, "1024") + field(FLNK, "$(P)LSIVAL") } -record(lsi,"$(P)LSIVAL:SP") +record(lsi,"$(P)LSIVAL") { + field(DTYP, "stream") + field(INP, "@test.proto readString $(PORT)") field(SIZV, "1024") }