Support module to provide control over procServ instances in EPICS.
The most important PVs provided are:
$(P):START - Start IOC
$(P):STOP - Stop IOC
$(P):RESTART - Restart IOC
$(P):IOCOUT - Last 20 lines of IOC output
This expects procServ version 2.7.0, but earlier versions should work.
The version of EPICS base tested was R3.12.14.7, but any version will work.
Asyn can be used for establishing the TCP/IP connection to procServ. Any version of Asyn will work.
A patch is required to procServ v2.7.0 to change the restart-character from ^R
to ^X
:
diff -ur procServ-2.7.0/procServ.cc procServ-2.7.0-patched/procServ.cc
--- procServ-2.7.0/procServ.cc 2017-01-18 14:30:17.000000000 +0000
+++ procServ-2.7.0-patched/procServ.cc 2018-12-06 11:11:12.173337693 +0000
@@ -60,7 +60,7 @@
char *ignChars = NULL; // Characters to ignore
char killChar = 0x18; // Kill command character (default: ^X)
char toggleRestartChar = 0x14; // Toggle autorestart character (default: ^T)
-char restartChar = 0x12; // Restart character (default: ^R)
+char restartChar = 0x18; // Restart character (default: ^X)
char quitChar = 0x11; // Quit character (default: ^Q)
char logoutChar = 0x00; // Logout client connection character (default: none)
int killSig = SIGKILL; // Kill signal (default: SIGKILL)
The sequencer support module (seq) is required. Any version will work.
dbLoadDatabase "dbd/autoProcServControl.dbd"
drvAsynIPPortConfigure("IOC1port", "localhost:7001", 100, 0, 0)
dbLoadRecords "${PROCSERVCONTROL}/db/procServControl.template", "P=PV_PREFIX, PORT=IOC1port"
seq(procServControl, "P=PV_PREFIX")