diff --git a/Makefile b/Makefile index 357c9c286daf2d05769c27d88a6368194033bb38..32a177963b85324048f7f4ba50da8b24e3652b62 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,4 @@ -# -# Copyright (c) 2017 - Present Jeong Han Lee +# Copyright (c) 2017 - 2020 Jeong Han Lee # Copyright (c) 2017 - Present European Spallation Source ERIC # # The program is free software: you can redistribute @@ -14,17 +13,7 @@ # # You should have received a copy of the GNU General Public License along with # this program. If not, see https://www.gnu.org/licenses/gpl-2.0.txt -# -# -# Author : Jeong Han Lee -# email : jeonghan.lee@gmail.com -# Date : 2018Apr06-1331-13CEST -# version : 0.0.1 - TOP:=$(CURDIR) - include $(TOP)/configure/CONFIG - include $(TOP)/configure/RULES - diff --git a/README.md b/README.md index f6aaab69c20a6dc899bfc1104476ecf9ee078c25..903eda64dc94b0ac485b9fc207429421a94938bd 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,50 @@ # e3-autosave -## Autosave settings +Wrapper for the `autosave` module - part of EPICS infrastructure at ESS. This module is loaded through `essioc` for production IOCs. -We try to enclose most possible autosave configuration within `autosave.iocsh`. +## Installation -## Preparation of DB - -Each record in database file that needs to have values saved by `autosave` must have the one of following `info` tags. Such as -``` - info(autosaveFields, "PREC SCAN DESC OUT") - info(autosaveFields_pass0, "VAL") - info(autosaveFields_pass1, "VAL") +```sh +$ make init patch build +$ make install ``` -Each info tag should be matched with what one would like to use such as +For further targets, type `make`. -* `autosaveFields` : before and after record initialization - - `settings.sav` : in `$(AS_TOP)/$(IOCNAME)/save` - - `settings.req` : in `$(AS_TOP)/$(IOCNAME)/req` - -* `autosaveFields_pass0` : before record initialization - - `values_pass0.sav` : in `$(AS_TOP)/$(IOCNAME)/save` - - `values_pass0.req` : in `$(AS_TOP)/$(IOCNAME)/req` +## Usage -* `autosaveFields_pass1`: after record initialization (Most autosave values can be restored at Pass 0 and Pass 1 using the `autosaveFields` info tag.) - - `values_pass1.sav` : in `$(AS_TOP)/$(IOCNAME)/save` - - `values_pass1.req` : in `$(AS_TOP)/$(IOCNAME)/req` +```sh +$ iocsh -r "autosave" +``` -Please look at the example in [Autosave DB example](template/SR_test_info.db). +### How it works -## How to enable it within e3 +To set up autosave (and boot-time restore) of record fields, use one of the following info-tags: +* `autosaveFields`: to restore **before** and **after** record initialization + - `settings.sav`: in `$(AS_TOP)/$(IOCNAME)/save` + - `settings.req`: in `$(AS_TOP)/$(IOCNAME)/req` + +* `autosaveFields_pass0`: to restore only **before** record initialization + - `values_pass0.sav`: in `$(AS_TOP)/$(IOCNAME)/save` + - `values_pass0.req`: in `$(AS_TOP)/$(IOCNAME)/req` -``` -require autosave,5.10.0 +* `autosaveFields_pass1`: to restore only **after** record initialization + - `values_pass1.sav`: in `$(AS_TOP)/$(IOCNAME)/save` + - `values_pass1.req`: in `$(AS_TOP)/$(IOCNAME)/req` -epicsEnvSet("TOP", "$(E3_CMD_TOP)/..") -epicsEnvSet("IOCNAME", "as_test") +For example: -iocshLoad("$(autosave_DIR)/autosave.iocsh", "AS_TOP=$(TOP),IOCNAME=$(IOCNAME)") +``` +record("*", "some-record") { + info(autosaveFields, "PREC SCAN DESC OUT") + info(autosaveFields_pass0, "VAL") + info(autosaveFields_pass1, "VAL") +} ``` -## asVerify - -asVerify is avaiable in `${EPICS_BASE}/bin/${EPICS_HOST_ARCH}/asVerify_VERSION`. Once e3 environment is sourced, it can be executable in that terminal. Please see its usage at https://epics.anl.gov/bcda/synApps/autosave/autoSaveRestore_R5-5.html#asVerify - +Each info tag should be matched with what one would like to use such as -## request (req) files +## Contributing -The req files can be used, however, one should copy all req files into `db` folder, by `TEMPLATE` variable. In order to integrate an IOC, please check [README : How to use existent req files](README_REQUEST.md). However, it is highly recommended **NOT** to use this method if possible. +Contributions through pull/merge requests only. diff --git a/autosave.Makefile b/autosave.Makefile index bc6c1f15136bd1020a1b4d7e58f272536ef701c3..1700e88ef40b0e5285651c4d3aeef6963abc15cf 100644 --- a/autosave.Makefile +++ b/autosave.Makefile @@ -1,6 +1,5 @@ -# # Copyright (c) 2017 - 2019 Jeong Han Lee -# Copyright (c) 2019 European Spallation Source ERIC +# Copyright (c) 2019 - Current European Spallation Source ERIC # # The program is free software: you can redistribute # it and/or modify it under the terms of the GNU General Public License @@ -14,71 +13,45 @@ # # You should have received a copy of the GNU General Public License along with # this program. If not, see https://www.gnu.org/licenses/gpl-2.0.txt -# -# Author : Jeong Han Lee -# email : han.lee@esss.se -# Date : Wednesday, September 11 20:36:45 CEST 2019 -# version : 0.0.4 - -# Get where_am_I before include driver.makefile. -# After driver.makefile, where_am_I is the epics base, -# so we cannot use it - -# LEGACY_RSET should be defined before driver.makefile -# require-ess from 3.0.1 -#LEGACY_RSET = YES - where_am_I := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) include ${E3_REQUIRE_TOOLS}/driver.makefile +USR_CFLAGS += -DDBLOADRECORDSHOOKREGISTER +USR_CFLAGS += -DUSE_TYPED_RSET - -# To enable autosaveBuild, use dbLoadRecordsHookRegister. (But it doesn't -# appear in EPICS base until 3.14.12.5, so disable by default for now.) -# ESS uses the more than 3.14.12.5, so we enable them by default - -USR_CFLAGS += -DDBLOADRECORDSHOOKREGISTER -USR_CFLAGS += -DUSE_TYPED_RSET - -USR_CFLAGS += -Wno-unused-variable -USR_CFLAGS += -Wno-unused-function +USR_CFLAGS += -Wno-unused-variable +USR_CFLAGS += -Wno-unused-function USR_CPPFLAGS += -Wno-unused-variable USR_CPPFLAGS += -Wno-unused-function +ASAPP := asApp +ASAPPDB := $(ASAPP)/Db +ASAPPSRC := $(ASAPP)/src -ASAPP:=asApp -ASAAPDB:= $(ASAPP)/Db -ASAPPSRC:= $(ASAPP)/src - -#include files HEADERS += $(ASAPPSRC)/os/Linux/osdNfs.h - -#os independent code +# OS independent code SOURCES += $(ASAPPSRC)/dbrestore.c SOURCES += $(ASAPPSRC)/save_restore.c SOURCES += $(ASAPPSRC)/initHooks.c SOURCES += $(ASAPPSRC)/fGetDateStr.c SOURCES += $(ASAPPSRC)/configMenuSub.c +SOURCES += $(ASAPPSRC)/verify.c -#os dependent code +# OS dependent code SOURCES += $(ASAPPSRC)/os/Linux/osdNfs.c -#DO NOT relocate verify.c file -#os independent code -SOURCES += $(ASAPPSRC)/verify.c - -DBDS += $(ASAPPSRC)/asSupport.dbd +DBDS += $(ASAPPSRC)/asSupport.dbd SCRIPTS += $(wildcard ../iocsh/*.iocsh) -TEMPLATES += ../template/save_restoreStatus.db -TEMPLATES += $(ASAAPDB)/configMenu.db +TEMPLATES += $(ASAPPDB)/save_restoreStatus.db +TEMPLATES += $(ASAPPDB)/configMenu.db -TEMPLATES += $(ASAAPDB)/configMenuNames.req -TEMPLATES += $(ASAAPDB)/configMenu.req -TEMPLATES += $(ASAAPDB)/configMenu_settings.req +TEMPLATES += $(ASAPPDB)/configMenuNames.req +TEMPLATES += $(ASAPPDB)/configMenu.req +TEMPLATES += $(ASAPPDB)/configMenu_settings.req ######################################################## # @@ -112,11 +85,3 @@ $(ASVERIFY): $(ASVERIFY_SOURCES:.c=.o) $(CCC) -o $@ -L$(EPICS_BASE_LIB) -Wl,-rpath,$(EPICS_BASE_LIB) $(OP_SYS_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(CODE_LDFLAGS) $^ -lca -lCom @echo "<<<<< asVerify Done" @echo "" - - - -# -.PHONY: vlibs -vlibs: -# - diff --git a/cmds/as_auto_test.cmd b/cmds/as_auto_test.cmd deleted file mode 100644 index 2b2e7476036f99be8ce4fea539ca70cd362e1cb7..0000000000000000000000000000000000000000 --- a/cmds/as_auto_test.cmd +++ /dev/null @@ -1,21 +0,0 @@ -require iocStats,3.1.16 -require autosave,5.10.0 -require std,3.5.0 - -epicsEnvSet("TOP", "$(E3_CMD_TOP)/..") - -epicsEnvSet("SEC", "SEC") -epicsEnvSet("SUB", "SUB01") -epicsEnvSet("P", "$(SEC)-$(SUB):") -epicsEnvSet("DIS", "DIS") -epicsEnvSet("DEV", "DEV-01") -epicsEnvSet("R", "$(DIS)-$(DEV)") - -iocshLoad("$(TOP)/iocsh/autosave.iocsh", "AS_TOP=$(TARGET),IOCNAME=$(IOCNAME),SEQ_PERIOD=60") - -dbLoadRecords("$(TOP)/template/SR_test_info.db","P=$(IOCNAME):,N=12") - - -iocInit() - -dbl > "${IOCNAME}_PVs.list" diff --git a/cmds/as_test.cmd b/cmds/as_test.cmd deleted file mode 100644 index 1b884473ad8d5b96ebc15faa901b9a370c843f08..0000000000000000000000000000000000000000 --- a/cmds/as_test.cmd +++ /dev/null @@ -1,23 +0,0 @@ -require iocStats,3.1.16 -require autosave,5.10.0 -#require std,3.6.1 - -epicsEnvSet("TOP", "$(E3_CMD_TOP)/..") - -epicsEnvSet("SEC", "SEC") -epicsEnvSet("SUB", "SUB01") -epicsEnvSet("P", "$(SEC)-$(SUB):") -epicsEnvSet("DIS", "DIS") -epicsEnvSet("DEV", "DEV-01") -epicsEnvSet("R", "$(DIS)-$(DEV)") -epicsEnvSet("IOCNAME", "ioc_test") - - -iocshLoad("$(TOP)/iocsh/autosave.iocsh", "AS_TOP=$(TOP),IOCNAME=$(IOCNAME),SEQ_PERIOD=60") - -dbLoadRecords("$(TOP)/template/SR_test_info.db","P=$(IOCNAME):,N=12") - - -iocInit() - -dbl > "${IOCNAME}_PVs.list" diff --git a/configure/CONFIG b/configure/CONFIG index 8772be7505d5eb1af55d86c2f74542cbffe5e1e6..5b2c6bb5fd9aad37256926d55a647d343f38029f 100644 --- a/configure/CONFIG +++ b/configure/CONFIG @@ -1,20 +1,8 @@ -# VARS_EXCLUDES := $(.VARIABLES) -ifneq (,$(findstring dev,$(MAKECMDGOALS))) -include $(TOP)/configure/RELEASE_DEV -else include $(TOP)/configure/RELEASE -endif - -ifneq (,$(findstring dev,$(MAKECMDGOALS))) -include $(TOP)/configure/CONFIG_MODULE_DEV -else include $(TOP)/configure/CONFIG_MODULE -endif E3_REQUIRE_LOCATION := $(EPICS_BASE)/$(E3_REQUIRE_NAME)/$(E3_REQUIRE_VERSION) - include $(E3_REQUIRE_LOCATION)/configure/CONFIG - diff --git a/configure/CONFIG_MODULE b/configure/CONFIG_MODULE index f43ddd20d11b8cdda6405fe2d4212301643033dd..2d5653d50af36be1162ee0a55d9460145a0cbaa3 100644 --- a/configure/CONFIG_MODULE +++ b/configure/CONFIG_MODULE @@ -7,6 +7,4 @@ E3_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME) E3_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile -include $(TOP)/configure/CONFIG_OPTIONS -# The definitions shown below can also be placed in an untracked CONFIG_MODULE*.local -include $(TOP)/configure/CONFIG_MODULE.local -# diff --git a/configure/CONFIG_MODULE_DEV b/configure/CONFIG_MODULE_DEV deleted file mode 100644 index 987f1613aec48294d612e863b5e6eb1f07f43461..0000000000000000000000000000000000000000 --- a/configure/CONFIG_MODULE_DEV +++ /dev/null @@ -1,18 +0,0 @@ -EPICS_MODULE_NAME:=autosave -# -EPICS_MODULE_TAG:=master -# -E3_MODULE_VERSION:=develop -# -E3_MODULE_NAME:=$(EPICS_MODULE_NAME) -# -E3_MODULE_SRC_PATH:=$(EPICS_MODULE_NAME)-dev -# -E3_MODULE_MAKEFILE:=$(EPICS_MODULE_NAME).Makefile -# -E3_MODULE_DEV_GITURL:="https://github.com/epics-modules/autosave" -# --include $(TOP)/configure/CONFIG_OPTIONS -# The definitions shown below can also be placed in an untracked CONFIG_MODULE*.local --include $(TOP)/configure/CONFIG_MODULE_DEV.local -# diff --git a/configure/CONFIG_OPTIONS b/configure/CONFIG_OPTIONS deleted file mode 100644 index 01b5b1da7b8e15ddabdf14ae8c775f289de706f3..0000000000000000000000000000000000000000 --- a/configure/CONFIG_OPTIONS +++ /dev/null @@ -1,13 +0,0 @@ -# One should install libusb-1.0.0 -# Debian apt-get install libusb-1.0-0-dev libusb-1.0-0 -# USR_INCLUDES -# $ pkg-config --cflags libusb-1.0 -# -I/usr/include/libusb-1.0 -# USR_LDFLAGS -# $ pkg-config --libs libusb-1.0 -# $ -lusb-1.0 -# -#ifeq (linux-x86_64, $(T_A)) -# DRV_USBTMC=YES -# export DRV_USBTMC -#endif diff --git a/configure/RELEASE b/configure/RELEASE index 0d6a02ccd18461a6ce18fd30f122fd86dd2b9272..2af34c30a725fbb7064c0e37fbf880c086fba31f 100644 --- a/configure/RELEASE +++ b/configure/RELEASE @@ -1,11 +1,7 @@ -# EPICS_BASE:=/epics/base-7.0.7 - E3_REQUIRE_NAME:=require E3_REQUIRE_VERSION:=5.0.0 -# The definitions shown below can also be placed in an untracked RELEASE.local -include $(TOP)/../../RELEASE.local -include $(TOP)/../RELEASE.local -include $(TOP)/configure/RELEASE.local - diff --git a/configure/RELEASE_DEV b/configure/RELEASE_DEV deleted file mode 100644 index feb99b80564d3f7476813ae12e98693148df8a0f..0000000000000000000000000000000000000000 --- a/configure/RELEASE_DEV +++ /dev/null @@ -1,11 +0,0 @@ -# -EPICS_BASE=/epics/base-7.0.5 - -E3_REQUIRE_NAME:=require -E3_REQUIRE_VERSION:=3.4.0 - -# The definitions shown below can also be placed in an untracked RELEASE_DEV.local --include $(TOP)/../../RELEASE_DEV.local --include $(TOP)/../RELEASE_DEV.local --include $(TOP)/configure/RELEASE_DEV.local - diff --git a/configure/RULES b/configure/RULES index 96cc1d180eecd24481bf84947a41d983b4b7bab6..0ae7170e517ff0d0cf392fde9b673078c3468d34 100644 --- a/configure/RULES +++ b/configure/RULES @@ -1,6 +1,5 @@ include $(E3_REQUIRE_CONFIG)/RULES_SITEMODS - include $(TOP)/configure/module/RULES_MODULE -include $(TOP)/configure/module/RULES_DKMS_L diff --git a/configure/module/RULES_DKMS_L b/configure/module/RULES_DKMS_L index c66bf32a19289cdcf990bc893a2758ab9357b362..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/configure/module/RULES_DKMS_L +++ b/configure/module/RULES_DKMS_L @@ -1,38 +0,0 @@ - -# KMOD_NAME := mrf - -# .PHONY: dkms_add - -# dkms_add: conf -# $(MSI) -M name="$(E3_MODULE_NAME)" -M version="$(E3_MODULE_VERSION)" -M kmod_name="$(KMOD_NAME)" $(TOP)/dkms/dkms_with_msi.conf.in > $(TOP)/dkms/dkms_with_msi.conf -# $(QUIET) cat $(TOP)/dkms/dkms_with_msi.conf $(TOP)/dkms/dkms_without_msi.conf > $(TOP)/dkms/dkms.conf -# $(QUIET) install -m 644 $(TOP)/dkms/dkms.conf $(E3_KMOD_SRC_PATH)/ -# $(SUDO) install -d /usr/src/$(E3_MODULE_NAME)-$(E3_MODULE_VERSION) -# $(SUDO) cp -r $(TOP)/$(E3_KMOD_SRC_PATH)/* /usr/src/$(E3_MODULE_NAME)-$(E3_MODULE_VERSION)/ -# $(SUDO) $(DKMS) add $(DKMS_ARGS) - - -# setup: -# $(QUIET) $(SUDO2) 'echo KERNEL==\"uio*\", ATTR{name}==\"mrf-pci\", MODE=\"0666\" | tee /etc/udev/rules.d/99-$(KMOD_NAME).rules' -# $(QUIET) $(SUDO) /bin/udevadm control --reload-rules -# $(QUIET) $(SUDO) /bin/udevadm trigger -# $(QUIET) $(SUDO2) 'echo $(KMOD_NAME) | tee /etc/modules-load.d/$(KMOD_NAME).conf' -# $(QUIET) $(SUDO) depmod --quick -# $(QUIET) $(SUDO) modprobe -rv $(KMOD_NAME) -# $(QUIET) $(SUDO) modprobe -v $(KMOD_NAME) -# $(QUIET) echo "" -# $(QUIET) echo "" -# $(QUIET) echo "It is OK to see \"E3/RULES_DKMS:37: recipe for target 'setup' failed\"" -# $(QUIET) echo "---------------------------------------------------------------------" -# $(QUIET) -ls -l /dev/uio* 2>/dev/null -# $(QUIET) echo "---------------------------------------------------------------------" - - -# setup_clean: -# $(QUIET) $(SUDO) modprobe -rv $(KMOD_NAME) -# $(SUDO) rm -f /etc/modules-load.d/$(KMOD_NAME).conf -# $(SUDO) rm -f /etc/udev/rules.d/99-$(KMOD_NAME).rules - - -# .PHONY: setup setup_clean - diff --git a/configure/module/RULES_MODULE b/configure/module/RULES_MODULE index a543df1ea18f77b4605e767653af919e6cebfea0..c74a6baeaaf648c1904af9118a16dc7e80c8ece7 100644 --- a/configure/module/RULES_MODULE +++ b/configure/module/RULES_MODULE @@ -1,6 +1,4 @@ -# .PHONY: hdrs - hdrs: TEST_BIN_LOCATION = $(TEMP_CELL_PATH)/$(notdir $(EPICS_BASE))/require-$(E3_REQUIRE_VERSION)/$(E3_MODULE_NAME)/$(E3_MODULE_VERSION)/bin diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index c5328381693f3d6efe28726d8764c1272dd4692d..0000000000000000000000000000000000000000 --- a/docs/README.md +++ /dev/null @@ -1,78 +0,0 @@ -How to reuse request files -=== - -It is highly recommended to use `info` tag instead of the seperated request files. However, this file would like to help them to use existent request files within `autosave.iocsh` within `e3-autosave` according to existent all EPICS modules' req files, own req files, or both. - - -## `e3-autosave` - -``` -require autosave,5.10.0 -... -dbLoadRecords("spinnaker.db", "P=$(PREFIX),R=,PORT=$(PORT)") -... -iocshLoad("$(autosave_DIR)/autosave.iocsh", "AS_TOP=$(TOP),IOCNAME=$(IOCNAME)") -# -iocInit() -``` - -## `e3-ADSpinnakar` - -* Use the same way to use `e3-autosave` - -* Define **all** requestfile path before the first `dbLoadRecords`. It is important to open all req files, which are related with all database files. And one has to check where they are. And one has to define them all. - -``` -set_requestfile_path("$(ADSpinnaker_DB)", "") -set_requestfile_path("$(ADGenICam_DB)", "") -set_requestfile_path("$(ADCore_DB)", "") -set_requestfile_path("$(calc_DB)", "") -set_requestfile_path("$(busy_DB)", "") -set_requestfile_path("$(TOP)", "cmds") -``` - -* Create one own req file in a directory (for example, `cmds`). - -``` -$ more cmds/auto_settings.req -file "spinnaker_settings.req", P=$(P), R=$(R) -file "NDStdArrays_settings.req", P=$(P), R=$(R) -file "commonPlugin_settings.req", P=$(P) -``` - -* Add the `create_monitor_set` after `iocInit` -``` -create_monitor_set("auto_settings.req", 5, "P=$(PREFIX),R=,IMAGE=$(IMAGE):") -``` - -* Full example for the ADSpinnaker application - -``` -require ADSpinnaker,2.0.0 -require calc,3.7.3 -require busy,1.7.2-e45eda2 -require autosave,5.10.0 - -epicsEnvSet("TOP", "$(E3_CMD_TOP)/..") - -set_requestfile_path("$(ADSpinnaker_DB)", "") -set_requestfile_path("$(ADGenICam_DB)", "") -set_requestfile_path("$(ADCore_DB)", "") -set_requestfile_path("$(calc_DB)", "") -set_requestfile_path("$(busy_DB)", "") -set_requestfile_path("$(TOP)", "cmds") - -ADSpinnakerConfig("$(PORT)", "$(CAMERA_ID)", 0x1, 0) -dbLoadRecords("spinnaker.db", "P=$(PREFIX),R=,PORT=$(PORT)") -dbLoadRecords("PGR_BlackflyS_50S5C.db", "P=$(PREFIX),R=,PORT=$(PORT)") - -NDStdArraysConfigure("$(IMAGE)", 5, 0, "$(PORT)", 0, 0) -dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=,PORT=$(IMAGE),ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int16,FTVL=SHORT,NELEMENTS=$(NELEMENTS)") -iocshLoad("$(ADCore_DIR)/commPlugins.iocsh", "P=$(PREFIX),UNIT=1,PORT=$(IMAGE),QSIZE=$(QSIZE),XSIZE=$(XSIZE),YSIZE=$(YSIZE),NCHANS=$(NCHANS),CBUFFS=$(CBUFFS)") - -iocshLoad("$(autosave_DIR)/autosave.iocsh", "AS_TOP=$(TOP),IOCNAME=$(IOCNAME)") - -iocInit() - -create_monitor_set("auto_settings.req", 5, "P=$(PREFIX),R=,IMAGE=$(IMAGE):") -``` diff --git a/iocsh/autosave.iocsh b/iocsh/autosave.iocsh index c623056336e4b5e5e77e6132f7120e6a0129cf38..204959ce50a533f6ae82546a57890fea2c37b118 100644 --- a/iocsh/autosave.iocsh +++ b/iocsh/autosave.iocsh @@ -16,6 +16,7 @@ #- AUTOSAVE_VALUES_PERIOD_PASS0 - Optional, Default 5 #- AUTOSAVE_VALUES_PERIOD_PASS1 - Optional, Default 10 #- AUTOSAVE_SETTINGS_PERIOD - Optional, Default 5 +#- AUTOSAVE_DEBUG_MODE - Optional, Default 0 set_savefile_path ("$(AS_TOP)/$(IOCDIR)", "/save") set_requestfile_path ("$(AS_TOP)/$(IOCDIR)", "/req") @@ -27,7 +28,7 @@ system("install -d $(AS_TOP)/$(IOCDIR)/req") save_restoreSet_status_prefix("$(IOCNAME):as-") #- Debug-output level -save_restoreSet_Debug(0) +save_restoreSet_Debug($(AUTOSAVE_DEBUG_MODE=0)) #- Ok to save/restore save sets with missing values (no CA connection to PV)? save_restoreSet_IncompleteSetsOk($(AUTOSAVE_INCOMPLETE=1)) diff --git a/patch/Site/HISTORY.md b/patch/Site/HISTORY.md deleted file mode 100644 index cbaad2eaa64047b0bd0ec3c4be818540a470da74..0000000000000000000000000000000000000000 --- a/patch/Site/HISTORY.md +++ /dev/null @@ -1,7 +0,0 @@ -# what_ever_filename.p0.patch - -Generic Description..... - -* created by Jeong Han Lee, han.lee@esss.se -* related URL or reference https://github.com/icshwi -* Tuesday, February 13 13:24:57 CET 2018 diff --git a/patch/Site/README.md b/patch/Site/README.md deleted file mode 100644 index 60cb9573d1395655dd6fc3dc93eb663db8091568..0000000000000000000000000000000000000000 --- a/patch/Site/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Site Specific EPICS Module Patch Files - -## Changes -The changes were tested in local environemnt, and commits to the forked repository and do pull request to the epics community module repository. - -* Check the original HASH, and your own master -* feb8856 : The original HASH -* master : Changed - - -## How to create a p0 patch file between commits - - -* Show what the difference between commits - - -* Create p0 patch - -``` -$git diff feb8856 master --no-prefix > ../patch/Site/what_ever_filename.p0.patch -``` - diff --git a/template/SR_test_info.db b/template/SR_test_info.db deleted file mode 100644 index c59108312c1492d612a5143f154027140d5442f9..0000000000000000000000000000000000000000 --- a/template/SR_test_info.db +++ /dev/null @@ -1,95 +0,0 @@ -record(ao, "$(P)SR_ao") -{ - field(DTYP,"Soft Channel") - info(autosaveFields, "PREC SCAN DESC OUT") - info(autosaveFields_pass0, "VAL") - -} - -record(ao, "$(P)SR_aoDISP") -{ - field(DTYP,"Soft Channel") - info(autosaveFields, "DISP") -} - -record(ao, "$(P)SR_longout") -{ - field(DTYP,"Soft Channel") - info(autosaveFields_pass1, "VAL") -} - -record(bo, "$(P)SR_bo") -{ - field(DTYP,"Soft Channel") - info(autosaveFields, "IVOV") -} - -record(bi, "$(P)SR_bi") -{ - field(DTYP,"Soft Channel") - info(autosaveFields_pass0, "SVAL") -} - -# arrays -record(waveform, "$(P)SR_char_array") -{ - field(NELM, "$(N)") - field(FTVL, "CHAR") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_double_array") -{ - field(NELM, "$(N)") - field(FTVL, "DOUBLE") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_float_array") -{ - field(NELM, "$(N)") - field(FTVL, "FLOAT") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_long_array") -{ - field(NELM, "$(N)") - field(FTVL, "LONG") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_short_array") -{ - field(NELM, "$(N)") - field(FTVL, "SHORT") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_string_array") -{ - field(NELM, "$(N)") - field(FTVL, "STRING") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_uchar_array") -{ - field(NELM, "$(N)") - field(FTVL, "UCHAR") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_ulong_array") -{ - field(NELM, "$(N)") - field(FTVL, "ULONG") - info(autosaveFields_pass1, "VAL") -} - -record(waveform, "$(P)SR_ushort_array") -{ - field(NELM, "$(N)") - field(FTVL, "USHORT") - info(autosaveFields_pass1, "VAL") -} diff --git a/tools/README.md b/tools/README.md deleted file mode 100644 index e7fb64d79260805b200c21003c39b79fdd807b73..0000000000000000000000000000000000000000 --- a/tools/README.md +++ /dev/null @@ -1,261 +0,0 @@ -Test Procedures -=== - -# Automatic - -``` -bash tools/check_autosave_status.bash -``` - -# Manual - -* Run an IOC - -``` -e3-autosave (master)$ iocsh.bash cmds/as_test.cmd -``` - -* Wait for Backup files.. -``` -... -efe358d.proton.20315 > save_restore:write_save_file: Backup file (/home/jhlee/e3-7.0.3/e3-autosave/cmds/../ioc_test/save/values_pass0.savB) bad or not found. Writing a new one. [191010-162509] -save_restore:write_save_file: Backup file (/home/jhlee/e3-7.0.3/e3-autosave/cmds/../ioc_test/save/settings.savB) bad or not found. Writing a new one. [191010-162509] -save_restore:write_save_file: Backup file (/home/jhlee/e3-7.0.3/e3-autosave/cmds/../ioc_test/save/values_pass1.savB) bad or not found. Writing a new one. [191010-162514] - -``` -* Check PVs -``` -e3-autosave (master)$ bash tools/SR_get.bash > 1 -e3-autosave (master)$ cat 1 -ioc_test:SR_aoDISP.DISP 0 -ioc_test:SR_ao.PREC 0 -ioc_test:SR_bo.IVOV 0 -ioc_test:SR_ao.SCAN Passive -ioc_test:SR_ao.VAL 0 -ioc_test:SR_ao.DESC -ioc_test:SR_ao.OUT -ioc_test:SR_longout 0 -ioc_test:SR_bi.SVAL 0 -ioc_test:SR_char_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -ioc_test:SR_double_array 12 2.50321e-308 0 0 0 0 0 0 0 0 0 0 0 -ioc_test:SR_float_array 12 4.06377e-44 0 0 0 0 0 0 0 0 0 0 0 -ioc_test:SR_long_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -ioc_test:SR_short_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -ioc_test:SR_string_array 12 -ioc_test:SR_uchar_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -ioc_test:SR_ulong_array 12 2.50321e-308 0 0 0 0 0 0 0 0 0 0 0 -ioc_test:SR_ushort_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -``` -* Put some values -``` -e3-autosave (master)$ bash tools/SR_put.bash -Old : ioc_test:SR_aoDISP.DISP 0 -New : ioc_test:SR_aoDISP.DISP 27 -Old : ioc_test:SR_ao.PREC 0 -New : ioc_test:SR_ao.PREC 6 -Old : ioc_test:SR_bo.IVOV 0 -New : ioc_test:SR_bo.IVOV 67 -Old : ioc_test:SR_ao.SCAN Passive -New : ioc_test:SR_ao.SCAN .1 second -Old : ioc_test:SR_ao.VAL 0 -New : ioc_test:SR_ao.VAL 622.1 -Old : ioc_test:SR_ao.DESC -New : ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -Old : ioc_test:SR_ao.OUT -New : ioc_test:SR_ao.OUT abc:rec PP NMS -Old : ioc_test:SR_longout 0 -New : ioc_test:SR_longout 743 -Old : ioc_test:SR_bi.SVAL 0 -New : ioc_test:SR_bi.SVAL 5 -Old : ioc_test:SR_char_array \003 -New : ioc_test:SR_char_array uzffe -Old : ioc_test:SR_double_array 12 2.50321e-308 0 0 0 0 0 0 0 0 0 0 0 -New : ioc_test:SR_double_array 12 6 67 80 622 743 0 0 0 0 0 0 0 -Old : ioc_test:SR_float_array 12 6.5861e-44 0 0 0 0 0 0 0 0 0 0 0 -New : ioc_test:SR_float_array 12 27 6 67 80 622 5 0 0 0 0 0 0 -Old : ioc_test:SR_long_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -New : ioc_test:SR_long_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -Old : ioc_test:SR_short_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -New : ioc_test:SR_short_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -Old : ioc_test:SR_string_array 12 -New : ioc_test:SR_string_array 12 uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi abc def ghi -Old : ioc_test:SR_uchar_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -New : ioc_test:SR_uchar_array 12 27 6 67 80 0 0 0 0 0 0 0 0 -Old : ioc_test:SR_ulong_array 12 2.50321e-308 0 0 0 0 0 0 0 0 0 0 0 -New : ioc_test:SR_ulong_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -Old : ioc_test:SR_ushort_array 12 3 0 0 0 0 0 0 0 0 0 0 0 -New : ioc_test:SR_ushort_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -``` - -* Check PVs values - -``` -e3-autosave (master)$ bash tools/SR_get.bash > 2 -jhlee@proton: e3-autosave (master)$ cat 2 -ioc_test:SR_aoDISP.DISP 27 -ioc_test:SR_ao.PREC 6 -ioc_test:SR_bo.IVOV 67 -ioc_test:SR_ao.SCAN .1 second -ioc_test:SR_ao.VAL 622.1 -ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -ioc_test:SR_ao.OUT abc:rec PP NMS -ioc_test:SR_longout 743 -ioc_test:SR_bi.SVAL 5 -ioc_test:SR_char_array 12 117 122 102 102 101 0 0 0 0 0 0 0 -ioc_test:SR_double_array 12 6 67 80 622 743 0 0 0 0 0 0 0 -ioc_test:SR_float_array 12 27 6 67 80 622 5 0 0 0 0 0 0 -ioc_test:SR_long_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -ioc_test:SR_short_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -ioc_test:SR_string_array 12 uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi abc def ghi -ioc_test:SR_uchar_array 12 27 6 67 80 0 0 0 0 0 0 0 0 -ioc_test:SR_ulong_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -ioc_test:SR_ushort_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -``` - -* Check the autosave folders -``` -e3-autosave (master)$ tree ioc_test/ -ioc_test/ -├── [jhlee 4.0K] req -│  ├── [jhlee 123] settings.req -│  ├── [jhlee 39] values_pass0.req -│  └── [jhlee 277] values_pass1.req -└── [jhlee 4.0K] save - ├── [jhlee 266] settings.sav - ├── [jhlee 211] settings.sav0 - ├── [jhlee 266] settings.sav1 - ├── [jhlee 266] settings.sav2 - ├── [jhlee 266] settings.savB - ├── [jhlee 125] values_pass0.sav - ├── [jhlee 121] values_pass0.sav0 - ├── [jhlee 125] values_pass0.sav1 - ├── [jhlee 125] values_pass0.sav2 - ├── [jhlee 125] values_pass0.savB - ├── [jhlee 767] values_pass1.sav - ├── [jhlee 369] values_pass1.sav0 - ├── [jhlee 371] values_pass1.sav1 - ├── [jhlee 767] values_pass1.sav2 - └── [jhlee 767] values_pass1.savB - - e3-autosave (master)$ more ioc_test/req/* -:::::::::::::: -ioc_test/req/settings.req -:::::::::::::: -ioc_test:SR_ao.PREC -ioc_test:SR_ao.SCAN -ioc_test:SR_ao.DESC -ioc_test:SR_ao.OUT -ioc_test:SR_aoDISP.DISP -ioc_test:SR_bo.IVOV -:::::::::::::: -ioc_test/req/values_pass0.req -:::::::::::::: -ioc_test:SR_ao.VAL -ioc_test:SR_bi.SVAL -:::::::::::::: -ioc_test/req/values_pass1.req -:::::::::::::: -ioc_test:SR_longout.VAL -ioc_test:SR_char_array.VAL -ioc_test:SR_double_array.VAL -ioc_test:SR_float_array.VAL -ioc_test:SR_long_array.VAL -ioc_test:SR_short_array.VAL -ioc_test:SR_string_array.VAL -ioc_test:SR_uchar_array.VAL -ioc_test:SR_ulong_array.VAL -ioc_test:SR_ushort_array.VAL - -e3-autosave (master)$ more ioc_test/save/settings.sav* -:::::::::::::: -ioc_test/save/settings.sav -:::::::::::::: -# autosave R5.3 Automatically generated - DO NOT MODIFY - 191010-162704 -ioc_test:SR_ao.PREC 6 -ioc_test:SR_ao.SCAN 9 -ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -ioc_test:SR_ao.OUT abc:rec PP NMS -ioc_test:SR_aoDISP.DISP 27 -ioc_test:SR_bo.IVOV 67 -<END> -:::::::::::::: -ioc_test/save/settings.sav0 -:::::::::::::: -# autosave R5.3 Automatically generated - DO NOT MODIFY - 191010-162704 -ioc_test:SR_ao.PREC 6 -ioc_test:SR_ao.SCAN 9 -ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -ioc_test:SR_ao.OUT abc:rec PP NMS -ioc_test:SR_aoDISP.DISP 27 -ioc_test:SR_bo.IVOV 67 -<END> -:::::::::::::: -ioc_test/save/settings.sav1 -:::::::::::::: -# autosave R5.3 Automatically generated - DO NOT MODIFY - 191010-162704 -ioc_test:SR_ao.PREC 6 -ioc_test:SR_ao.SCAN 9 -ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -ioc_test:SR_ao.OUT abc:rec PP NMS -ioc_test:SR_aoDISP.DISP 27 -ioc_test:SR_bo.IVOV 67 -<END> -:::::::::::::: -ioc_test/save/settings.sav2 -:::::::::::::: -# autosave R5.3 Automatically generated - DO NOT MODIFY - 191010-162704 -ioc_test:SR_ao.PREC 6 -ioc_test:SR_ao.SCAN 9 -ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -ioc_test:SR_ao.OUT abc:rec PP NMS -ioc_test:SR_aoDISP.DISP 27 -ioc_test:SR_bo.IVOV 67 -<END> -:::::::::::::: -ioc_test/save/settings.savB -:::::::::::::: -# autosave R5.3 Automatically generated - DO NOT MODIFY - 191010-162704 -ioc_test:SR_ao.PREC 6 -ioc_test:SR_ao.SCAN 9 -ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -ioc_test:SR_ao.OUT abc:rec PP NMS -ioc_test:SR_aoDISP.DISP 27 -ioc_test:SR_bo.IVOV 67 -<END> -``` - -* Exit and restart an IOC -``` -efe358d.proton.20315 > exit -e3-autosave (master)$ iocsh.bash cmds/as_test.cmd - -``` - -* Check autosave values - -``` -e3-autosave (master)$ bash tools/SR_get.bash > 3 -jhlee@proton: e3-autosave (master)$ cat 3 -ioc_test:SR_aoDISP.DISP 27 -ioc_test:SR_ao.PREC 6 -ioc_test:SR_bo.IVOV 67 -ioc_test:SR_ao.SCAN .1 second -ioc_test:SR_ao.VAL 622.1 -ioc_test:SR_ao.DESC uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi -ioc_test:SR_ao.OUT abc:rec PP NMS -ioc_test:SR_longout 743 -ioc_test:SR_bi.SVAL 5 -ioc_test:SR_char_array 12 117 122 102 102 101 0 0 0 0 0 0 0 -ioc_test:SR_double_array 12 6 67 80 622 743 0 0 0 0 0 0 0 -ioc_test:SR_float_array 12 27 6 67 80 622 5 0 0 0 0 0 0 -ioc_test:SR_long_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -ioc_test:SR_short_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -ioc_test:SR_string_array 12 uuanjwiemsfnjjyzwjlaunhlxonfgyirdackcqi abc def ghi -ioc_test:SR_uchar_array 12 27 6 67 80 0 0 0 0 0 0 0 0 -ioc_test:SR_ulong_array 12 27 6 67 80 622 743 0 0 0 0 0 0 -ioc_test:SR_ushort_array 12 27 6 67 80 622 743 0 0 0 0 0 0 - -e3-autosave (master)$ diff 2 3 - -``` - diff --git a/tools/SR_get.bash b/tools/SR_get.bash deleted file mode 100644 index 0c74fa0b70ff2d6292594ef90b21edefe8926774..0000000000000000000000000000000000000000 --- a/tools/SR_get.bash +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 European Spallation Source ERIC -# -# The program is free software: you can redistribute -# it and/or modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation, either version 2 of the -# License, or any newer version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along with -# this program. If not, see https://www.gnu.org/licenses/gpl-2.0.txt -# -# Author : Jeong Han Lee -# email : jeonghan.lee@gmail.com -# Date : Thursday, October 10 13:48:25 CEST 2019 -# version : 0.0.1 - -declare -gr SC_SCRIPT="$(realpath "$0")" -declare -gr SC_SCRIPTNAME=${0##*/} -declare -gr SC_TOP="${SC_SCRIPT%/*}" - -GET_CMD="caget" - -function get_funct -{ - local pv=$1; shift; - local sleep_interval=.02 - ${GET_CMD} ${pv} - sleep ${sleep_interval} -} - - -options="7" - - - -while getopts "${options}" opt; do - case "${opt}" in - 7) GET_CMD="pvget" ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - ;; - esac -done -shift $((OPTIND-1)) - -P="$1" - -if [ -z $P ]; then - P="ioc_test:" -else - P="${P}:" -fi - -if hash ${GET_CMD} 2>/dev/null ; then - - get_funct ${P}SR_aoDISP.DISP - get_funct ${P}SR_ao.PREC - get_funct ${P}SR_bo.IVOV - get_funct ${P}SR_ao.SCAN - get_funct ${P}SR_ao.VAL - get_funct ${P}SR_ao.DESC - get_funct ${P}SR_ao.OUT - get_funct ${P}SR_longout - get_funct ${P}SR_bi.SVAL - get_funct ${P}SR_char_array - get_funct ${P}SR_double_array - get_funct ${P}SR_float_array - get_funct ${P}SR_long_array - get_funct ${P}SR_short_array - get_funct ${P}SR_string_array - get_funct ${P}SR_uchar_array - get_funct ${P}SR_ulong_array - get_funct ${P}SR_ushort_array -else - printf "\n>>>> We cannot run $0\n"; - printf " because we cannot find $GET_CMD in the system\n" - printf " please source setE3Env.bash first\n" - printf "\n" - exit; -fi diff --git a/tools/SR_put.bash b/tools/SR_put.bash deleted file mode 100644 index c0e542689857de0910e00d78c7cf4d2798f52b0b..0000000000000000000000000000000000000000 --- a/tools/SR_put.bash +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 European Spallation Source ERIC -# -# The program is free software: you can redistribute -# it and/or modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation, either version 2 of the -# License, or any newer version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along with -# this program. If not, see https://www.gnu.org/licenses/gpl-2.0.txt -# -# Author : Jeong Han Lee -# email : jeonghan.lee@gmail.com -# Date : Thursday, October 10 13:49:39 CEST 2019 -# version : 0.0.1 - -declare -gr SC_SCRIPT="$(realpath "$0")" -declare -gr SC_SCRIPTNAME=${0##*/} -declare -gr SC_TOP="${SC_SCRIPT%/*}" - - -function put_funct -{ - local pv=$1; shift; - local val=$@; - local sleep_interval=.1 - ${PUT_CMD} ${pv} ${val} - sleep ${sleep_interval} -} - - -declare -a scanlist=("Passive" "Event" "I/O Intr" "10 second" "5 second" "2 second" "1 second" ".5 second" ".2 second" ".1 second") - - -#options="7" - - -PUT_CMD="caput" - - -# while getopts "${options}" opt; do -# case "${opt}" in -# 7) PUT_CMD="pvput" ;; -# \?) -# echo "Invalid option: -$OPTARG" >&2 -# ;; -# esac -# done -# shift $((OPTIND-1)) - -P="$1" - -if [ -z $P ]; then - P="ioc_test:" -else - P="${P}:" -fi - - -if hash ${PUT_CMD} 2>/dev/null ; then - - a=$(tr -cd 0-9 </dev/urandom | head -c 2) - put_funct ${P}SR_aoDISP.DISP $a - # - b=$(tr -cd 0-9 </dev/urandom | head -c 2) - put_funct ${P}SR_ao.PREC $b - # - c=$(tr -cd 0-9 </dev/urandom | head -c 2) - put_funct ${P}SR_bo.IVOV $c - # - d=$(tr -cd 0-9 </dev/urandom | head -c 2) - size=${#scanlist[@]} - index=$(($RANDOM % $size)) - put_funct ${P}SR_ao.SCAN "${scanlist[$index]}" - # - e=$(tr -cd 0-9 </dev/urandom | head -c 3) - put_funct ${P}SR_ao.VAL $e.1 - # - f=$(tr -cd a-z </dev/urandom | head -c 128) - put_funct ${P}SR_ao.DESC $f - # - put_funct ${P}SR_ao.OUT "abc:rec PP" - # - g=$(tr -cd 0-9 </dev/urandom | head -c 3) - put_funct ${P}SR_longout $g - # - h=$(tr -cd 0-9 </dev/urandom | head -c 1) - put_funct ${P}SR_bi.SVAL $h - # - i=$(tr -cd a-z </dev/urandom | head -c 5) - put_funct -S ${P}SR_char_array "$i" - - put_funct -a ${P}SR_double_array $a $b $c $d $e $g - put_funct -a ${P}SR_float_array $g $a $b $c $d $e $h - put_funct -a ${P}SR_long_array $g $a $b $c $d $e $g - put_funct -a ${P}SR_short_array $g $a $b $c $d $e $g - put_funct -a ${P}SR_string_array 3 $f abc def ghi - put_funct -a ${P}SR_uchar_array $g $a $b $c $d 0 0 - put_funct -a ${P}SR_ulong_array $g $a $b $c $d $e $g - put_funct -a ${P}SR_ushort_array $g $a $b $c $d $e $g - -else - printf "\n>>>> We cannot run $0\n"; - printf " because we cannot find $GET_CMD in the system\n" - printf " please source setE3Env.bash first\n" - printf "\n" - exit; -fi diff --git a/tools/check_autosave_status.bash b/tools/check_autosave_status.bash deleted file mode 100644 index 912aec31f188f26b956c3dc86d81a47a9497ab76..0000000000000000000000000000000000000000 --- a/tools/check_autosave_status.bash +++ /dev/null @@ -1,135 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 European Spallation Source ERIC -# -# The program is free software: you can redistribute -# it and/or modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation, either version 2 of the -# License, or any newer version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for -# more details. -# -# You should have received a copy of the GNU General Public License along with -# this program. If not, see https://www.gnu.org/licenses/gpl-2.0.txt -# -# Author : Jeong Han Lee -# email : jeonghan.lee@gmail.com -# Date : Thursday, October 10 17:21:08 CEST 2019 -# version : 0.0.1 - -declare -gr SC_SCRIPT="$(realpath "$0")" -declare -gr SC_SCRIPTNAME=${0##*/} -declare -gr SC_TOP="${SC_SCRIPT%/*}" - -declare -gr session0="as_test_session0" -declare -gr session1="as_test_session1" - -declare -gr test1="pv_values_at_1" -declare -gr test2="pv_values_at_2" -declare -gr test3="pv_values_at_3" - - -TOP=${SC_TOP}/.. -TARGET=${TOP}/.test -PREFIX=autosaveOutputTOP -#STARTUP=${TOP}/cmds/as_test.cmd -STARTUP="${TOP}/cmds/as_auto_test.cmd TARGET=${TARGET} IOCNAME=${PREFIX}" - -function iocsh_within_screen -{ - local top="$1"; shift; - local session_name="$1"; shift; - local startup_cmd="$1"; shift; - local sleep_time="$1"; shift; - - cat > ${top}/.screenrc <<EOF -logfile ${top}/output.log -logfile flush 1 -log on -logtstamp after 1 -logtstamp on -EOF - - screen -c ${top}/.screenrc -dm -L -S ${session_name} /bin/bash -c "${E3_REQUIRE_LOCATION}/bin/iocsh.bash ${startup_cmd}" & - - sleep ${sleep_time} - - cat ${top}/output.log - - sleep 1 - -} - -function kill_screen -{ - local session_name="$1"; shift; - screen -X -S ${session_name} quit -} -# -mkdir -p ${TARGET} - -# -# -echo ">>> Start IOC ........ " -iocsh_within_screen ${TARGET} ${session0} "${STARTUP}" "15" - -echo "" -echo ">>> Get, Put, Get PVs" - -bash ${SC_TOP}/SR_get.bash "${PREFIX}" > ${TARGET}/${test1} -echo "${TARGET}/${test1}" -cat ${TARGET}/${test1} -bash ${SC_TOP}/SR_put.bash "${PREFIX}" -bash ${SC_TOP}/SR_get.bash "${PREFIX}" > ${TARGET}/${test2} -echo "${TARGET}/${test2}" -cat ${TARGET}/${test2} - -echo "" -echo ">>> Give enough time to the IOC to do autosave their values" -# -# more than lagest one of SETTINGS_PERIOD=5, VALUES_PASS0_PERIOD=5, and VALUES_PASS1_PERIOD=10 -SLEEP_TIME=20 -echo " Sleeping ..... ${SLEEP_TIME} secs ..... " -sleep ${SLEEP_TIME} - -echo "" -echo ">>> Killing IOC at ${session0}" -kill_screen ${session0} - - -echo "" -echo ">>> Restart IOC" -iocsh_within_screen ${TARGET} ${session1} "${STARTUP}" "5" -bash ${SC_TOP}/SR_get.bash "${PREFIX}" > ${TARGET}/${test3} -echo "${TARGET}/${test3}" -cat ${TARGET}/${test3} - -echo "" -echo ">>> Killing IOC at ${session1}" -kill_screen ${session1} - - -echo "" -echo ">>> Comparing ${test3} with ${test2}" -cmd="diff ${TARGET}/${test3} ${TARGET}/${test2}" -echo "- $cmd --------------" -$cmd -if [ $? -ne 0 ]; then - echo "------------------------------------------------------------------------------------------------------------" - echo "" - echo ">>>> Ooops! There is something wrong" - echo " Please check \"${TARGET}\" to see ....." -else - echo "------------------------------------------------------------------------------------------------------------" - echo "" - echo ">>>> Test passed!" - echo " Clearning \"${TARGET}\" ... " - rm -rf ${TARGET} - echo " See you later..." -fi - - -exit